bbcode 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Manifest +1 -1
  2. data/Rakefile +1 -1
  3. data/bbcode.gemspec +2 -2
  4. data/lib/bbcode.rb +168 -175
  5. metadata +2 -2
data/Manifest CHANGED
@@ -1,6 +1,6 @@
1
1
  lib/bbcode.rb
2
2
  Manifest
3
3
  LICENSE
4
- Rakefile
5
4
  TODO
6
5
  README
6
+ Rakefile
data/Rakefile CHANGED
@@ -6,7 +6,7 @@
6
6
  p.summary = "A tool to beautify code."
7
7
  p.url = "http://www.likenote.com"
8
8
  p.email = "eiffelqiu@gmail.com"
9
- p.version = "0.0.3"
9
+ p.version = "0.0.4"
10
10
  p.need_tar_gz = false
11
11
  end
12
12
 
data/bbcode.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{bbcode}
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["eiffel qiu"]
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = %q{A tool to beautify code.}
11
11
  s.email = %q{eiffelqiu@gmail.com}
12
12
  s.extra_rdoc_files = ["lib/bbcode.rb", "LICENSE", "TODO", "README"]
13
- s.files = ["lib/bbcode.rb", "Manifest", "LICENSE", "Rakefile", "TODO", "README", "bbcode.gemspec"]
13
+ s.files = ["lib/bbcode.rb", "Manifest", "LICENSE", "TODO", "README", "Rakefile", "bbcode.gemspec"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://www.likenote.com}
16
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Bbcode", "--main", "README"]
data/lib/bbcode.rb CHANGED
@@ -1,186 +1,179 @@
1
1
  module Bbcode
2
2
 
3
- # user-customizable values
3
+ # user-customizable values
4
4
 
5
- Bbcode::TabStr = " "
6
- Bbcode::TabSize = 4
5
+ TabStr = " "
6
+ TabSize = 4
7
7
 
8
- # indent regexp tests
8
+ # indent regexp tests
9
9
 
10
- IndentExp = [
11
- /^module\b/,
12
- /^class\b/,
13
- /^if\b/,
14
- /(=\s*|^)until\b/,
15
- /(=\s*|^)for\b/,
16
- /^unless\b/,
17
- /(=\s*|^)while\b/,
18
- /(=\s*|^)begin\b/,
19
- /(^| )case\b/,
20
- /\bthen\b/,
21
- /^rescue\b/,
22
- /^def\b/,
23
- /\bdo\b/,
24
- /^else\b/,
25
- /^elsif\b/,
26
- /^ensure\b/,
27
- /\bwhen\b/,
28
- /\{[^\}]*$/,
29
- /\[[^\]]*$/
30
- ]
10
+ IndentExp = [
11
+ /^module\b/,
12
+ /^class\b/,
13
+ /^if\b/,
14
+ /(=\s*|^)until\b/,
15
+ /(=\s*|^)for\b/,
16
+ /^unless\b/,
17
+ /(=\s*|^)while\b/,
18
+ /(=\s*|^)begin\b/,
19
+ /(^| )case\b/,
20
+ /\bthen\b/,
21
+ /^rescue\b/,
22
+ /^def\b/,
23
+ /\bdo\b/,
24
+ /^else\b/,
25
+ /^elsif\b/,
26
+ /^ensure\b/,
27
+ /\bwhen\b/,
28
+ /\{[^\}]*$/,
29
+ /\[[^\]]*$/
30
+ ]
31
31
 
32
- # outdent regexp tests
32
+ # outdent regexp tests
33
33
 
34
- OutdentExp = [
35
- /^rescue\b/,
36
- /^ensure\b/,
37
- /^elsif\b/,
38
- /^end\b/,
39
- /^else\b/,
40
- /\bwhen\b/,
41
- /^[^\{]*\}/,
42
- /^[^\[]*\]/
43
- ]
34
+ OutdentExp = [
35
+ /^rescue\b/,
36
+ /^ensure\b/,
37
+ /^elsif\b/,
38
+ /^end\b/,
39
+ /^else\b/,
40
+ /\bwhen\b/,
41
+ /^[^\{]*\}/,
42
+ /^[^\[]*\]/
43
+ ]
44
44
 
45
- def self.included(base)
46
- base.send(:extend, ClassMethods)
47
- end
45
+ def self.rb_make_tab(tab)
46
+ return (tab < 0) ? "" : TabStr * TabSize * tab
47
+ end
48
48
 
49
- module ClassMethods
49
+ def self.rb_add_line(line,tab)
50
+ line.strip!
51
+ line = rb_make_tab(tab) + line if line.length > 0
52
+ return line
53
+ end
50
54
 
51
- def rb_make_tab(tab)
52
- return (tab < 0) ? "" : TabStr * TabSize * tab
53
- end
54
-
55
- def rb_add_line(line,tab)
56
- line.strip!
57
- line = rb_make_tab(tab) + line if line.length > 0
58
- return line
59
- end
60
-
61
- def beautify_string(source, path = "")
62
- comment_block = false
63
- in_here_doc = false
64
- here_doc_term = ""
65
- program_end = false
66
- multiLine_array = []
67
- multiLine_str = ""
68
- tab = 0
69
- output = []
70
- source.each do |line|
71
- line.chomp!
72
- if(!program_end)
73
- # detect program end mark
74
- if(line =~ /^__END__$/)
75
- program_end = true
76
- else
77
- # combine continuing lines
78
- if(!(line =~ /^\s*#/) && line =~ /[^\\]\\\s*$/)
79
- multiLine_array.push line
80
- multiLine_str += line.sub(/^(.*)\\\s*$/,"\\1")
81
- next
82
- end
83
-
84
- # add final line
85
- if(multiLine_str.length > 0)
86
- multiLine_array.push line
87
- multiLine_str += line.sub(/^(.*)\\\s*$/,"\\1")
88
- end
89
-
90
- tline = ((multiLine_str.length > 0)?multiLine_str:line).strip
91
- if(tline =~ /^=begin/)
92
- comment_block = true
93
- end
94
- if(in_here_doc)
95
- in_here_doc = false if tline =~ %r{\s*#{here_doc_term}\s*}
96
- else # not in here_doc
97
- if tline =~ %r{=\s*<<}
98
- here_doc_term = tline.sub(%r{.*=\s*<<-?\s*([_|\w]+).*},"\\1")
99
- in_here_doc = here_doc_term.size > 0
100
- end
101
- end
102
- end
103
- end
104
- if(comment_block || program_end || in_here_doc)
105
- # add the line unchanged
106
- output << line
107
- else
108
- comment_line = (tline =~ /^#/)
109
- if(!comment_line)
110
- # throw out sequences that will
111
- # only sow confusion
112
- while tline.gsub!(/\{[^\{]*?\}/,"")
113
- end
114
- while tline.gsub!(/\[[^\[]*?\]/,"")
115
- end
116
- while tline.gsub!(/'.*?'/,"")
117
- end
118
- while tline.gsub!(/".*?"/,"")
119
- end
120
- while tline.gsub!(/\`.*?\`/,"")
121
- end
122
- while tline.gsub!(/\([^\(]*?\)/,"")
123
- end
124
- while tline.gsub!(/\/.*?\//,"")
125
- end
126
- while tline.gsub!(/%r(.).*?\1/,"")
127
- end
128
- # delete end-of-line comments
129
- tline.sub!(/#[^\"]+$/,"")
130
- # convert quotes
131
- tline.gsub!(/\\\"/,"'")
132
- OutdentExp.each do |re|
133
- if(tline =~ re)
134
- tab -= 1
135
- break
136
- end
137
- end
138
- end
139
- if (multiLine_array.length > 0)
140
- multiLine_array.each do |ml|
141
- output << rb_add_line(ml,tab)
142
- end
143
- multiLine_array.clear
144
- multiLine_str = ""
145
- else
146
- output << rb_add_line(line,tab)
147
- end
148
- if(!comment_line)
149
- IndentExp.each do |re|
150
- if(tline =~ re && !(tline =~ /\s+end\s*$/))
151
- tab += 1
152
- break
153
- end
154
- end
155
- end
156
- end
157
- if(tline =~ /^=end/)
158
- comment_block = false
159
- end
160
- end
161
- error = (tab != 0)
162
- STDERR.puts "Error: indent/outdent mismatch: #{tab}." if error
163
- return output.join("\n") + "\n",error
164
- end # beautify_string
165
-
166
- def beautify_file(path)
167
- error = false
168
- if(path == '-') # stdin source
169
- source = STDIN.read
170
- dest,error = beautify_string(source,"stdin")
171
- print dest
172
- else # named file source
173
- source = File.read(path)
174
- dest,error = beautify_string(source,path)
175
- if(source != dest)
176
- # make a backup copy
177
- File.open(path + "~","w") { |f| f.write(source) }
178
- # overwrite the original
179
- File.open(path,"w") { |f| f.write(dest) }
180
- end
181
- end
182
- return error
183
- end # beautify_file
184
- end
55
+ def self.beautify_string(source, path = "")
56
+ comment_block = false
57
+ in_here_doc = false
58
+ here_doc_term = ""
59
+ program_end = false
60
+ multiLine_array = []
61
+ multiLine_str = ""
62
+ tab = 0
63
+ output = []
64
+ source.each do |line|
65
+ line.chomp!
66
+ if(!program_end)
67
+ # detect program end mark
68
+ if(line =~ /^__END__$/)
69
+ program_end = true
70
+ else
71
+ # combine continuing lines
72
+ if(!(line =~ /^\s*#/) && line =~ /[^\\]\\\s*$/)
73
+ multiLine_array.push line
74
+ multiLine_str += line.sub(/^(.*)\\\s*$/,"\\1")
75
+ next
76
+ end
185
77
 
186
- end # module Bbcode
78
+ # add final line
79
+ if(multiLine_str.length > 0)
80
+ multiLine_array.push line
81
+ multiLine_str += line.sub(/^(.*)\\\s*$/,"\\1")
82
+ end
83
+
84
+ tline = ((multiLine_str.length > 0)?multiLine_str:line).strip
85
+ if(tline =~ /^=begin/)
86
+ comment_block = true
87
+ end
88
+ if(in_here_doc)
89
+ in_here_doc = false if tline =~ %r{\s*#{here_doc_term}\s*}
90
+ else # not in here_doc
91
+ if tline =~ %r{=\s*<<}
92
+ here_doc_term = tline.sub(%r{.*=\s*<<-?\s*([_|\w]+).*},"\\1")
93
+ in_here_doc = here_doc_term.size > 0
94
+ end
95
+ end
96
+ end
97
+ end
98
+ if(comment_block || program_end || in_here_doc)
99
+ # add the line unchanged
100
+ output << line
101
+ else
102
+ comment_line = (tline =~ /^#/)
103
+ if(!comment_line)
104
+ # throw out sequences that will
105
+ # only sow confusion
106
+ while tline.gsub!(/\{[^\{]*?\}/,"")
107
+ end
108
+ while tline.gsub!(/\[[^\[]*?\]/,"")
109
+ end
110
+ while tline.gsub!(/'.*?'/,"")
111
+ end
112
+ while tline.gsub!(/".*?"/,"")
113
+ end
114
+ while tline.gsub!(/\`.*?\`/,"")
115
+ end
116
+ while tline.gsub!(/\([^\(]*?\)/,"")
117
+ end
118
+ while tline.gsub!(/\/.*?\//,"")
119
+ end
120
+ while tline.gsub!(/%r(.).*?\1/,"")
121
+ end
122
+ # delete end-of-line comments
123
+ tline.sub!(/#[^\"]+$/,"")
124
+ # convert quotes
125
+ tline.gsub!(/\\\"/,"'")
126
+ OutdentExp.each do |re|
127
+ if(tline =~ re)
128
+ tab -= 1
129
+ break
130
+ end
131
+ end
132
+ end
133
+ if (multiLine_array.length > 0)
134
+ multiLine_array.each do |ml|
135
+ output << rb_add_line(ml,tab)
136
+ end
137
+ multiLine_array.clear
138
+ multiLine_str = ""
139
+ else
140
+ output << rb_add_line(line,tab)
141
+ end
142
+ if(!comment_line)
143
+ IndentExp.each do |re|
144
+ if(tline =~ re && !(tline =~ /\s+end\s*$/))
145
+ tab += 1
146
+ break
147
+ end
148
+ end
149
+ end
150
+ end
151
+ if(tline =~ /^=end/)
152
+ comment_block = false
153
+ end
154
+ end
155
+ error = (tab != 0)
156
+ STDERR.puts "Error: indent/outdent mismatch: #{tab}." if error
157
+ return output.join("\n") + "\n",error
158
+ end # beautify_string
159
+
160
+ def self.beautify_file(path)
161
+ error = false
162
+ if(path == '-') # stdin source
163
+ source = STDIN.read
164
+ dest,error = beautify_string(source,"stdin")
165
+ print dest
166
+ else # named file source
167
+ source = File.read(path)
168
+ dest,error = beautify_string(source,path)
169
+ if(source != dest)
170
+ # make a backup copy
171
+ File.open(path + "~","w") { |f| f.write(source) }
172
+ # overwrite the original
173
+ File.open(path,"w") { |f| f.write(dest) }
174
+ end
175
+ end
176
+ return error
177
+ end # beautify_file
178
+
179
+ end # module Bbcode
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - eiffel qiu
@@ -28,9 +28,9 @@ files:
28
28
  - lib/bbcode.rb
29
29
  - Manifest
30
30
  - LICENSE
31
- - Rakefile
32
31
  - TODO
33
32
  - README
33
+ - Rakefile
34
34
  - bbcode.gemspec
35
35
  has_rdoc: true
36
36
  homepage: http://www.likenote.com