Module: Kaigyo
- Included in:
- String
- Defined in:
- lib/kaigyo.rb,
lib/kaigyo/version.rb,
lib/kaigyo/tokenizer.rb
Defined Under Namespace
Classes: Error, Tokenizer
Constant Summary
collapse
- VERSION =
"0.1.1"
Instance Method Summary
collapse
Instance Method Details
#indent_token(size) ⇒ Object
46
47
48
|
# File 'lib/kaigyo.rb', line 46
def indent_token(size)
' ' * size
end
|
#kaigyo ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/kaigyo.rb', line 7
def kaigyo
return self unless self.downcase.include?("select")
tokenizer = Tokenizer.new(self)
tokens = tokenizer.token_analysis
result = []
indent_size = 0
formatted = tokens.inject([]) do |acc, token|
if token.first == :left_paren
indent_size += 1
end
if token.first == :right_paren
indent_size -= 1
end
if token.first == :clause
acc << [indent_token(indent_size) + token[1]]
elsif token.first == :and || token.first == :or
acc << [indent_token(indent_size) + ' ' + token[1]]
else
acc.last << token[1]
end
acc
end.map do |row|
row.each.with_index.inject("") do |str, (c, idx)|
if idx == 0
str += c
else
str += c == ',' ? c : " #{c}"
end
end
end.join("\n")
puts formatted
formatted
end
|