ditto_code 0.1.1 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dittoc +13 -5
  3. data/lib/dittocode/parse.rb +64 -21
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ea196dce723d0ac359698050ce90f82f8f0e881
4
- data.tar.gz: 49835ff70f702190110698aec6b36d574194a949
3
+ metadata.gz: ff2bc71ba0731750d144d1878e573f6bc2b85e98
4
+ data.tar.gz: b183b41ca6d755444711a1580b253234a08a0bb7
5
5
  SHA512:
6
- metadata.gz: 7076a4c538c10972d81f43f625d87cfeea2dcc3b97c29ef253f69dc875dd00b6a61d85c3209f2f62365f4780efa9f3368a41e0d4bdb0e389c73c4b0803bff39d
7
- data.tar.gz: b137220d26735421ac0a6955e976a982cb2bdd8a6dae9131c5617fc9eed82a1015e176cd2ad30f6eb00322f2d814cf16b43969bd7b1cc0ca5307a81a52d668df
6
+ metadata.gz: 8c22c60d9860e6367dfc1d4ca1779596520e8951d297c59f09bf4f8fb61c340808603b26b28e1bceddae817b00d2487e3eb276165aedcd16b243b59ff49da534
7
+ data.tar.gz: 7ae8682cece826d4cb2df8d207eae3aac3a59d4808a55355938bbf28dec941830e5774ac923f7990c63fd12ad9899876336b527c6e31b0ea2fde5858d9b5f937
data/bin/dittoc CHANGED
@@ -7,7 +7,7 @@ require 'ditto_code'
7
7
 
8
8
  def usage(s)
9
9
  $stderr.puts("Ditto say -> [Err] " + s)
10
- $stderr.puts("Ditto say -> [Usage] #{File.basename($0)}: [-v <verbose>] [-f <folder>] [-r <recursive>] [-o <override files>] [--allow-views <search in views>] ENVIRONMENT file|folder")
10
+ $stderr.puts("Ditto say -> [Usage] #{File.basename($0)}: [-v <verbose>] [-f <folder>] [-r <recursive>] [-o <override files>] [--allow-views <search in views>] [-i <indent>] ENVIRONMENT file|folder")
11
11
  exit(1)
12
12
  end
13
13
 
@@ -64,6 +64,7 @@ $verbose = false;
64
64
  $override = false;
65
65
  @recursive = false
66
66
  @allow_views = false
67
+ $indent = false
67
68
 
68
69
  # ===============================================================
69
70
  # INITIATION
@@ -76,14 +77,17 @@ while ARGV[0]
76
77
  $isFolder = true
77
78
  when '-v'
78
79
  ARGV.shift
79
- $verbose = ARGV.shift
80
+ $verbose = true
80
81
  when '-o'
81
82
  ARGV.shift
82
83
  $override = true
83
84
  when '-r'
84
85
  ARGV.shift
85
86
  @recursive = true
86
- when '--allow-views'
87
+ when '-i'
88
+ ARGV.shift
89
+ $indent = true
90
+ when '--allow-views'
87
91
  ARGV.shift
88
92
  @allow_views = true
89
93
  when /^-/
@@ -104,7 +108,7 @@ end
104
108
  # ===============================================================
105
109
 
106
110
  # Initiate ditto
107
- @ditto = DittoCode::Parse.new($environment, $override)
111
+ @ditto = DittoCode::Parse.new($environment, $override, $verbose, $indent)
108
112
 
109
113
  # Check if the user has introduce a folder/file
110
114
  if $folder.empty?
@@ -121,7 +125,11 @@ else
121
125
  iterateFolder($folder)
122
126
  else
123
127
  # Only a file
124
- ditto.transformation($folder)
128
+ if $folder.end_with?('.rb')
129
+ @ditto.transformation($folder, false)
130
+ elsif $folder.end_with?('.erb') && @allow_views
131
+ @ditto.transformation($folder, true)
132
+ end
125
133
  end
126
134
 
127
135
  end
@@ -10,18 +10,25 @@ module DittoCode
10
10
  end
11
11
 
12
12
  # Initialize the environment
13
- def initialize(environment, override)
14
- @env = environment;
15
- @override = override;
13
+ def initialize(environment, override, verbose, indent)
14
+ @env = environment
15
+ @override = override
16
+ @verbose = verbose
17
+ @indent = indent
16
18
  end
17
19
 
18
20
  # Transform the file based in the environment
19
- def transformation(file_path, @isView)
21
+ def transformation(file_path, isView)
20
22
 
21
23
  # Start to read the file
22
24
  file = File.open(file_path)
23
- @file_name = File.basename(file_path, ".rb")
25
+ if isView
26
+ @file_name = File.basename(file_path, ".erb")
27
+ else
28
+ @file_name = File.basename(file_path, ".rb")
29
+ end
24
30
  @dir_name = File.dirname(file_path) + "/"
31
+ @isView = isView
25
32
 
26
33
  # Generate the new archive
27
34
  out_file = initiateFile(file_path)
@@ -32,10 +39,8 @@ module DittoCode
32
39
  # Get the text
33
40
  # Protect against nil or directory when it's a file
34
41
  begin
35
- text = file.read
36
-
37
42
  # Each line........
38
- text.each_line do | line |
43
+ file.each_line do | line |
39
44
 
40
45
  if @isView
41
46
  m = /[\s]*<%[\s]*DittoCode::Exec.if[\s]+['|"](?<environment>[a-zA-Z]+)['|"][\s]+do[\s]*%>/.match(line)
@@ -50,7 +55,13 @@ module DittoCode
50
55
  else
51
56
 
52
57
  if !actions[:atack]
53
- out_file.puts(line)
58
+ if file.eof?
59
+ # Don't print a \n in the last line
60
+ out_file.print(line)
61
+ else
62
+ out_file.puts(line)
63
+ end
64
+
54
65
  else
55
66
  # He is transforming
56
67
  dittos += 1
@@ -63,7 +74,7 @@ module DittoCode
63
74
  actions[:atack] = false
64
75
  elsif actions[:env] == @env
65
76
  # Only how if we must mantain it
66
- out_file.puts(line.indent(-1))
77
+ check_with_indent(out_file, line)
67
78
  end
68
79
 
69
80
  actions[:ends] -= 1
@@ -72,7 +83,7 @@ module DittoCode
72
83
 
73
84
  # prints of coincide with the environment
74
85
  if actions[:env] == @env
75
- out_file.puts(line.indent(-1))
86
+ check_with_indent(out_file, line)
76
87
  end
77
88
 
78
89
  # Check if we need to add a new end
@@ -87,7 +98,10 @@ module DittoCode
87
98
 
88
99
  end
89
100
 
90
- say "[Ok] #{dittos} lines ditted on #{@dir_name}#{@file_name}!"
101
+ if @verbose || dittos != 0
102
+ say "[Ok] #{dittos} lines ditted on #{@dir_name}#{@file_name}!"
103
+ end
104
+
91
105
  closeFile(out_file)
92
106
 
93
107
  rescue => e
@@ -98,20 +112,36 @@ module DittoCode
98
112
  say "[Err] Oh no! I have an error :("
99
113
  end
100
114
 
115
+ if @verbose
116
+ say e
117
+ end
118
+
101
119
  end
102
120
  end
103
121
 
104
122
  private
105
123
 
124
+ # Send the line into the file. If indent is true
125
+ # The line will be indented
126
+ def check_with_indent(out_file, line)
127
+ if @indent
128
+ out_file.puts(line.indent(-1))
129
+ else
130
+ out_file.puts(line)
131
+ end
132
+ end
133
+
106
134
  # Detect an end line
107
135
  def isEnd?(line)
108
136
 
109
137
  # Coincide with an end!
110
- if /^[\s]*end/.match(line)
111
- return true
138
+ if @isView && /[\s]+(end)[\s]*%>/.match(line)
139
+ true
140
+ elsif /^[\s]*end/.match(line)
141
+ true
142
+ else
143
+ false
112
144
  end
113
-
114
- return false
115
145
  end
116
146
 
117
147
  # Detect if we need to add a new end
@@ -120,7 +150,7 @@ module DittoCode
120
150
  # Get the initializers and the ends of the blocks
121
151
  if @isView
122
152
  initializers = line.scan(/<%[\s]*(if|do|def)[\s]+/).size + line.scan(/<%[@=;\s\w\d]*(if|do|def)[\s]+/).size
123
- finals = line.scan(/[\s]+(end)[\s]*%>/).size + line.scan(/<%[\s]*(end)[\s]*%>/).size
153
+ finals = line.scan(/[\s]+(end)[\s]*%>/).size
124
154
  else
125
155
  initializers = line.scan(/^(if|do|def)[\s]+/).size + line.scan(/[\s]+(if|do|def)[\s]+/).size + line.scan(/[\s]+(if|do|def)$/).size
126
156
  finals = line.scan(/[\s]+(end)[\s]+/).size + line.scan(/^(end)[\s]+/).size + line.scan(/[\s]+(end)$/).size
@@ -135,9 +165,17 @@ module DittoCode
135
165
  def initiateFile(file_path)
136
166
 
137
167
  if(@override)
138
- File.new("#{@dir_name}#{@file_name}_tmp.rb", "w")
168
+ if @isView
169
+ File.new("#{@dir_name}#{@file_name}_tmp.erb", "w")
170
+ else
171
+ File.new("#{@dir_name}#{@file_name}_tmp.rb", "w")
172
+ end
139
173
  else
140
- File.new("#{@dir_name}#{@file_name}_#{@env}.rb", "w")
174
+ if @isView
175
+ File.new("#{@dir_name}#{@file_name}_#{@env}.erb", "w")
176
+ else
177
+ File.new("#{@dir_name}#{@file_name}_#{@env}.rb", "w")
178
+ end
141
179
  end
142
180
 
143
181
  end
@@ -153,8 +191,13 @@ module DittoCode
153
191
  file.close;
154
192
 
155
193
  if(@override)
156
- File.delete(file)
157
- File.rename(file, "#{@dir_name}#{@file_name}.rb")
194
+ if @isView
195
+ File.delete("#{@dir_name}#{@file_name}.erb")
196
+ File.rename(file, "#{@dir_name}#{@file_name}.erb")
197
+ else
198
+ File.delete("#{@dir_name}#{@file_name}.rb")
199
+ File.rename(file, "#{@dir_name}#{@file_name}.rb")
200
+ end
158
201
  end
159
202
 
160
203
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ditto_code
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Angel M Miguel