Skip to content

Commit 978f2d0

Browse files
authored
Auto-format .sql files using github.com/sql-formatter-org/sql-formatter - pig-latin (#166)
[no important files changed]
1 parent e57620a commit 978f2d0

File tree

4 files changed

+261
-111
lines changed

4 files changed

+261
-111
lines changed
Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,62 @@
11
UPDATE "pig-latin"
2-
SET result = (
3-
WITH words (word) AS (
4-
SELECT j.value
5-
FROM JSON_EACH(PRINTF('["%s"]', REPLACE(phrase, ' ', '","'))) j
6-
)
7-
SELECT GROUP_CONCAT(word, ' ')
8-
FROM (
9-
SELECT (
10-
WITH remove_vowels (word, no_vowel) AS (
11-
SELECT
12-
word,
13-
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
14-
word,
15-
'a', CHAR(10)),
16-
'e', CHAR(10)),
17-
'i', CHAR(10)),
18-
'o', CHAR(10)),
19-
'u', CHAR(10)
20-
)
21-
FROM "pig-latin"
22-
)
23-
SELECT CASE
24-
WHEN REGEXP('^([aeiou]|xr|yt)', word) THEN word || 'ay'
25-
WHEN REGEXP('^[bcdfghjklmnpqrstvwxyz]*qu', word)
26-
THEN PRINTF(
27-
'%s%say',
28-
SUBSTR(word, INSTR(word, 'qu') + 2),
29-
SUBSTR(word, 1, INSTR(word, 'qu') + 1)
30-
)
31-
WHEN REGEXP('^[bcdfghjklmnpqrstvwxz]+y', word)
32-
THEN
33-
PRINTF(
34-
'%s%say',
35-
SUBSTR(word, INSTR(word, 'y')),
36-
SUBSTR(word, 1 , INSTR(word, 'y') - 1)
37-
)
38-
WHEN GLOB('[bcdfghjklmnpqrstvwxyz]*', word)
39-
THEN
40-
PRINTF(
41-
'%s%say',
42-
SUBSTR(word, INSTR(no_vowel, CHAR(10))),
43-
SUBSTR(word, 1, INSTR(no_vowel, CHAR(10)) - 1)
44-
)
45-
END
46-
FROM remove_vowels
47-
) AS word
48-
FROM words
49-
)
50-
)
51-
;
2+
SET
3+
result = (
4+
WITH
5+
words (word) AS (
6+
SELECT
7+
j.value
8+
FROM
9+
JSON_EACH(PRINTF('["%s"]', REPLACE(phrase, ' ', '","'))) j
10+
)
11+
SELECT
12+
GROUP_CONCAT(word, ' ')
13+
FROM
14+
(
15+
SELECT
16+
(
17+
WITH
18+
remove_vowels (word, no_vowel) AS (
19+
SELECT
20+
word,
21+
REPLACE(
22+
REPLACE(
23+
REPLACE(
24+
REPLACE(REPLACE(word, 'a', CHAR(10)), 'e', CHAR(10)),
25+
'i',
26+
CHAR(10)
27+
),
28+
'o',
29+
CHAR(10)
30+
),
31+
'u',
32+
CHAR(10)
33+
)
34+
FROM
35+
"pig-latin"
36+
)
37+
SELECT
38+
CASE
39+
WHEN REGEXP ('^([aeiou]|xr|yt)', word) THEN word || 'ay'
40+
WHEN REGEXP ('^[bcdfghjklmnpqrstvwxyz]*qu', word) THEN PRINTF(
41+
'%s%say',
42+
SUBSTR(word, INSTR(word, 'qu') + 2),
43+
SUBSTR(word, 1, INSTR(word, 'qu') + 1)
44+
)
45+
WHEN REGEXP ('^[bcdfghjklmnpqrstvwxz]+y', word) THEN PRINTF(
46+
'%s%say',
47+
SUBSTR(word, INSTR(word, 'y')),
48+
SUBSTR(word, 1, INSTR(word, 'y') - 1)
49+
)
50+
WHEN GLOB('[bcdfghjklmnpqrstvwxyz]*', word) THEN PRINTF(
51+
'%s%say',
52+
SUBSTR(word, INSTR(no_vowel, CHAR(10))),
53+
SUBSTR(word, 1, INSTR(no_vowel, CHAR(10)) - 1)
54+
)
55+
END
56+
FROM
57+
remove_vowels
58+
) AS word
59+
FROM
60+
words
61+
)
62+
);
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
DROP TABLE IF EXISTS "pig-latin";
2-
CREATE TABLE "pig-latin" (
3-
phrase TEXT NOT NULL,
4-
result TEXT
5-
);
2+
3+
CREATE TABLE "pig-latin" (phrase TEXT NOT NULL, result TEXT);
64

75
.mode csv
86
.import ./data.csv "pig-latin"
9-
10-
UPDATE "pig-latin" SET result = NULL;
7+
UPDATE "pig-latin"
8+
SET
9+
result = NULL;
Lines changed: 153 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,158 @@
11
DROP TABLE IF EXISTS tests;
2+
23
CREATE TABLE IF NOT EXISTS tests (
3-
-- uuid and description are taken from the test.toml file
4-
uuid TEXT PRIMARY KEY,
5-
description TEXT NOT NULL,
6-
-- The following section is needed by the online test-runner
7-
status TEXT DEFAULT 'fail',
8-
message TEXT,
9-
output TEXT,
10-
test_code TEXT,
11-
task_id INTEGER DEFAULT NULL,
12-
-- Here are columns for the actual tests
13-
phrase TEXT NOT NULL,
14-
expected TEXT NOT NULL
4+
-- uuid and description are taken from the test.toml file
5+
uuid TEXT PRIMARY KEY,
6+
description TEXT NOT NULL,
7+
-- The following section is needed by the online test-runner
8+
status TEXT DEFAULT 'fail',
9+
message TEXT,
10+
output TEXT,
11+
test_code TEXT,
12+
task_id INTEGER DEFAULT NULL,
13+
-- Here are columns for the actual tests
14+
phrase TEXT NOT NULL,
15+
expected TEXT NOT NULL
1516
);
1617

17-
INSERT INTO tests (uuid, description, phrase, expected)
18+
INSERT INTO
19+
tests (uuid, description, phrase, expected)
1820
VALUES
19-
('11567f84-e8c6-4918-aedb-435f0b73db57', 'word beginning with a', 'apple', 'appleay'),
20-
('f623f581-bc59-4f45-9032-90c3ca9d2d90', 'word beginning with e', 'ear', 'earay'),
21-
('7dcb08b3-23a6-4e8a-b9aa-d4e859450d58', 'word beginning with i', 'igloo', 'iglooay'),
22-
('0e5c3bff-266d-41c8-909f-364e4d16e09c', 'word beginning with o', 'object', 'objectay'),
23-
('614ba363-ca3c-4e96-ab09-c7320799723c', 'word beginning with u', 'under', 'underay'),
24-
('bf2538c6-69eb-4fa7-a494-5a3fec911326', 'word beginning with a vowel and followed by a qu', 'equal', 'equalay'),
25-
('e5be8a01-2d8a-45eb-abb4-3fcc9582a303', 'word beginning with p', 'pig', 'igpay'),
26-
('d36d1e13-a7ed-464d-a282-8820cb2261ce', 'word beginning with k', 'koala', 'oalakay'),
27-
('d838b56f-0a89-4c90-b326-f16ff4e1dddc', 'word beginning with x', 'xenon', 'enonxay'),
28-
('bce94a7a-a94e-4e2b-80f4-b2bb02e40f71', 'word beginning with q without a following u', 'qat', 'atqay'),
29-
('e59dbbe8-ccee-4619-a8e9-ce017489bfc0', 'word beginning with consonant and vowel containing qu', 'liquid', 'iquidlay'),
30-
('c01e049a-e3e2-451c-bf8e-e2abb7e438b8', 'word beginning with ch', 'chair', 'airchay'),
31-
('9ba1669e-c43f-4b93-837a-cfc731fd1425', 'word beginning with qu', 'queen', 'eenquay'),
32-
('92e82277-d5e4-43d7-8dd3-3a3b316c41f7', 'word beginning with qu and a preceding consonant', 'square', 'aresquay'),
33-
('79ae4248-3499-4d5b-af46-5cb05fa073ac', 'word beginning with th', 'therapy', 'erapythay'),
34-
('e0b3ae65-f508-4de3-8999-19c2f8e243e1', 'word beginning with thr', 'thrush', 'ushthray'),
35-
('20bc19f9-5a35-4341-9d69-1627d6ee6b43', 'word beginning with sch', 'school', 'oolschay'),
36-
('54b796cb-613d-4509-8c82-8fbf8fc0af9e', 'word beginning with yt', 'yttria', 'yttriaay'),
37-
('8c37c5e1-872e-4630-ba6e-d20a959b67f6', 'word beginning with xr', 'xray', 'xrayay'),
38-
('a4a36d33-96f3-422c-a233-d4021460ff00', 'y is treated like a consonant at the beginning of a word', 'yellow', 'ellowyay'),
39-
('adc90017-1a12-4100-b595-e346105042c7', 'y is treated like a vowel at the end of a consonant cluster', 'rhythm', 'ythmrhay'),
40-
('29b4ca3d-efe5-4a95-9a54-8467f2e5e59a', 'y as second letter in two letter word', 'my', 'ymay'),
41-
('44616581-5ce3-4a81-82d0-40c7ab13d2cf', 'a whole phrase', 'quick fast run', 'ickquay astfay unray');
21+
(
22+
'11567f84-e8c6-4918-aedb-435f0b73db57',
23+
'word beginning with a',
24+
'apple',
25+
'appleay'
26+
),
27+
(
28+
'f623f581-bc59-4f45-9032-90c3ca9d2d90',
29+
'word beginning with e',
30+
'ear',
31+
'earay'
32+
),
33+
(
34+
'7dcb08b3-23a6-4e8a-b9aa-d4e859450d58',
35+
'word beginning with i',
36+
'igloo',
37+
'iglooay'
38+
),
39+
(
40+
'0e5c3bff-266d-41c8-909f-364e4d16e09c',
41+
'word beginning with o',
42+
'object',
43+
'objectay'
44+
),
45+
(
46+
'614ba363-ca3c-4e96-ab09-c7320799723c',
47+
'word beginning with u',
48+
'under',
49+
'underay'
50+
),
51+
(
52+
'bf2538c6-69eb-4fa7-a494-5a3fec911326',
53+
'word beginning with a vowel and followed by a qu',
54+
'equal',
55+
'equalay'
56+
),
57+
(
58+
'e5be8a01-2d8a-45eb-abb4-3fcc9582a303',
59+
'word beginning with p',
60+
'pig',
61+
'igpay'
62+
),
63+
(
64+
'd36d1e13-a7ed-464d-a282-8820cb2261ce',
65+
'word beginning with k',
66+
'koala',
67+
'oalakay'
68+
),
69+
(
70+
'd838b56f-0a89-4c90-b326-f16ff4e1dddc',
71+
'word beginning with x',
72+
'xenon',
73+
'enonxay'
74+
),
75+
(
76+
'bce94a7a-a94e-4e2b-80f4-b2bb02e40f71',
77+
'word beginning with q without a following u',
78+
'qat',
79+
'atqay'
80+
),
81+
(
82+
'e59dbbe8-ccee-4619-a8e9-ce017489bfc0',
83+
'word beginning with consonant and vowel containing qu',
84+
'liquid',
85+
'iquidlay'
86+
),
87+
(
88+
'c01e049a-e3e2-451c-bf8e-e2abb7e438b8',
89+
'word beginning with ch',
90+
'chair',
91+
'airchay'
92+
),
93+
(
94+
'9ba1669e-c43f-4b93-837a-cfc731fd1425',
95+
'word beginning with qu',
96+
'queen',
97+
'eenquay'
98+
),
99+
(
100+
'92e82277-d5e4-43d7-8dd3-3a3b316c41f7',
101+
'word beginning with qu and a preceding consonant',
102+
'square',
103+
'aresquay'
104+
),
105+
(
106+
'79ae4248-3499-4d5b-af46-5cb05fa073ac',
107+
'word beginning with th',
108+
'therapy',
109+
'erapythay'
110+
),
111+
(
112+
'e0b3ae65-f508-4de3-8999-19c2f8e243e1',
113+
'word beginning with thr',
114+
'thrush',
115+
'ushthray'
116+
),
117+
(
118+
'20bc19f9-5a35-4341-9d69-1627d6ee6b43',
119+
'word beginning with sch',
120+
'school',
121+
'oolschay'
122+
),
123+
(
124+
'54b796cb-613d-4509-8c82-8fbf8fc0af9e',
125+
'word beginning with yt',
126+
'yttria',
127+
'yttriaay'
128+
),
129+
(
130+
'8c37c5e1-872e-4630-ba6e-d20a959b67f6',
131+
'word beginning with xr',
132+
'xray',
133+
'xrayay'
134+
),
135+
(
136+
'a4a36d33-96f3-422c-a233-d4021460ff00',
137+
'y is treated like a consonant at the beginning of a word',
138+
'yellow',
139+
'ellowyay'
140+
),
141+
(
142+
'adc90017-1a12-4100-b595-e346105042c7',
143+
'y is treated like a vowel at the end of a consonant cluster',
144+
'rhythm',
145+
'ythmrhay'
146+
),
147+
(
148+
'29b4ca3d-efe5-4a95-9a54-8467f2e5e59a',
149+
'y as second letter in two letter word',
150+
'my',
151+
'ymay'
152+
),
153+
(
154+
'44616581-5ce3-4a81-82d0-40c7ab13d2cf',
155+
'a whole phrase',
156+
'quick fast run',
157+
'ickquay astfay unray'
158+
);

0 commit comments

Comments
 (0)