wavy 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec8ba39833a876b1c873e30574534d17a9d3505e
4
- data.tar.gz: 468a62d4bd1c8c8631e5f45a9d9cb57f5b406ab8
3
+ metadata.gz: 822ce721c0f7b44814c30ae88dc79fe9f545c638
4
+ data.tar.gz: 327d19af49b0f994bed7422133e609fc8e2fd8cb
5
5
  SHA512:
6
- metadata.gz: 19ad15357ccb0bcd2400716a201bf65b534f539d9e53760c7e9ec92d725c9ebe85b80a9545e69b41347717f233598316a43ec7e83705aece8ac157c38d22fa9a
7
- data.tar.gz: 7a71dc3bbe4645f9e7c4c864fba489491b591c16d38001994a307cc8ad71f3b481bd433d15c5ea37d08d79d570162e0100b47b46fafea4f06d9c70fc8203449e
6
+ metadata.gz: 18ed4d2f4f01eecd450316f9c67ff56bd915b0fa52c08cc650c3b6b6ca00e6c2c12faecab8c95f123ceb50e0f640972ca606613d9b5e327c4e0a4ca847f867d0
7
+ data.tar.gz: f8b3afbb9092ba731eceaed653c5cb57179d4ae8f46c3d72e84ae407721c2cd2808140b2610fd5ef33cfa12ad4b312eb7a6d39bea02f639605a7d523fcaecb01
@@ -4,6 +4,93 @@ module Wavy
4
4
 
5
5
  class Mixin
6
6
 
7
+ # Parses all function and template mixins
8
+ #
9
+ # @param (String) data Content
10
+ # @param (String|Boolean) path Template path
11
+ #
12
+ # @return (String) data Parsed content
13
+ def self.parse(template, path = false)
14
+ template = parseTemplates(template, path)
15
+
16
+ return template
17
+ end
18
+
19
+ # Finds all included mixin functions.
20
+ #
21
+ # @param (String) data Content
22
+ # @param (String) path Template path
23
+ #
24
+ # @return (String) data Parsed content
25
+ def self.parseTemplates(template, path)
26
+ pattern = /(@import)\s\"(.*)\"/
27
+
28
+ indent = ""
29
+ template_new = ""
30
+
31
+ saved_templates = Wavy::Models::Mixins.getTemplates
32
+
33
+ template.each_line.with_index do |line, i|
34
+ matches = line.scan(pattern)
35
+
36
+ line = parseFunctions(line)
37
+
38
+ if matches.length > 0
39
+ matches.each do |match|
40
+ if(saved_templates["template-"+match[1]])
41
+ imported_file = saved_templates["template-"+match[1]]
42
+ else
43
+ Wavy::Parsers::Mixin.definedTemplate(line, path)
44
+ saved_templates = Wavy::Models::Mixins.getTemplates
45
+
46
+ imported_file = saved_templates["template-"+match[1]]
47
+ end
48
+
49
+ content = imported_file.content
50
+
51
+ find = "@import \"#{match[1]}\""
52
+
53
+ new_content = ""
54
+
55
+ current_indent = indent.dup
56
+ current_indent << line.slice(0..(line.index(find)))
57
+ current_indent[-1] = ""
58
+
59
+ same_line = false
60
+
61
+ if current_indent.strip.empty? == false
62
+ same_line = true
63
+ end
64
+
65
+ content = parseFunctions(content)
66
+
67
+ content.each_line.with_index do |content_line, ii|
68
+ if same_line == true
69
+ content_line = content_line.strip
70
+ content_line.delete!("\n")
71
+ else
72
+ if i > 0 && ii > 0
73
+ new_content << current_indent
74
+ end
75
+ end
76
+
77
+ new_content << content_line
78
+ end
79
+
80
+ new_line = current_indent
81
+ new_line << new_content
82
+ new_line << "\n"
83
+
84
+ line = new_line
85
+ end
86
+ end
87
+
88
+ template_new << line
89
+ end
90
+
91
+ return template_new
92
+ end
93
+
7
94
  # Finds all user-defined mixins.
8
95
  #
9
96
  # @param (String) data Content
@@ -28,7 +115,7 @@ module Wavy
28
115
  #
29
116
  # @param (String) content Content
30
117
  # @param (String|Boolean) path Template path
31
- def self.definedTemplates(content, path = false)
118
+ def self.definedTemplate(content, path = false)
32
119
  pattern = /(@import)\s\"(.*)\"/
33
120
  matches = content.scan(pattern)
34
121
 
@@ -93,7 +180,7 @@ module Wavy
93
180
  file_match = file_match[0]
94
181
 
95
182
  content = FILE_IMPORTER.load(file_path)
96
- content = parse(content, file_path)
183
+ content = parseTemplates(content, file_path)
97
184
 
98
185
  mixin_node = Wavy::Nodes::Mixin.new(name, content, false)
99
186
 
@@ -113,19 +200,6 @@ module Wavy
113
200
  end
114
201
  end
115
202
 
116
- # Parses all function and template mixins
117
- #
118
- # @param (String) data Content
119
- # @param (String|Boolean) path Template path
120
- #
121
- # @return (String) data Parsed content
122
- def self.parse(template, path = false)
123
- template = parseFunctions(template)
124
- template = parseTemplates(template, path)
125
-
126
- return template
127
- end
128
-
129
203
  # Finds all included mixin functions.
130
204
  #
131
205
  # @param (String) template Content
@@ -158,48 +232,70 @@ module Wavy
158
232
  end
159
233
 
160
234
  # Search for includes within mixins
161
- content = parse(content)
235
+ content = parseFunctions(content)
162
236
 
163
237
  # Find mixin string to replace
164
238
  find = "@include #{match[1]}(#{match[2]})"
165
- template = template.gsub(find, content)
166
- end
167
- end
168
- end
169
239
 
170
- return template
171
- end
240
+ indent = ""
241
+ new_template = ""
242
+ new_content = ""
172
243
 
173
- # Finds all included mixin functions.
174
- #
175
- # @param (String) data Content
176
- # @param (String) path Template path
177
- #
178
- # @return (String) data Parsed content
179
- def self.parseTemplates(template, path)
180
- # Search for mixin includes
181
- pattern = /(@import)\s\"(.*)\"/
182
- matches = template.scan(pattern)
244
+ template.each_line.with_index do |line, i|
245
+ matches = line.scan(find)
183
246
 
184
- mixins = Wavy::Models::Mixins.getTemplates
247
+ if matches.length > 0
248
+ current_indent = indent.dup
249
+ current_indent << line.slice(0..(line.index(find)))
250
+ current_indent[-1] = ""
185
251
 
186
- # Go through and parse each include
187
- if matches.length > 0
188
- matches.each do |match|
189
- if(mixins["template-"+match[1]])
252
+ line.delete!("\n")
190
253
 
191
- mixin = mixins["template-"+match[1]]
192
- content = mixin.content
254
+ same_line = false
193
255
 
194
- # Search for includes within mixins
195
- content = parse(content, path)
256
+ if current_indent.strip.empty? == false
257
+ same_line = true
258
+ end
196
259
 
197
- # Find mixin string to replace
198
- find = "@import \"#{match[1]}\""
199
- template = template.gsub(find, content)
200
- else
201
- Wavy::Parsers::Mixin.definedTemplates(template, path)
202
- template = parseTemplates(template, path)
260
+ content_tab_length = 0
261
+
262
+ content.each_line.with_index do |content_line, ii|
263
+ match_indent = content_line.scan(/^(\s*|\t*)\S/)
264
+
265
+ if same_line == true
266
+ content_line = content_line.strip
267
+ content_line.delete!("\n")
268
+ else
269
+ if ii > 1 && same_line == false
270
+ new_content << current_indent
271
+ end
272
+
273
+ if ii == 1 && match_indent[0] && match_indent[0][0]
274
+ content_tab_length = match_indent[0][0].length
275
+ end
276
+
277
+ if match_indent[0] && match_indent[0][0] && match_indent[0][0].length >= content_tab_length
278
+ content_line.slice!(0, content_tab_length)
279
+ end
280
+
281
+ end
282
+
283
+ if ii > 0
284
+ new_content << content_line
285
+ end
286
+ end
287
+
288
+ if same_line == true && i == (template.lines.count-1)
289
+ line << "\n"
290
+ end
291
+
292
+ line = line.gsub(find, new_content)
293
+ end
294
+
295
+ new_template << line
296
+ end
297
+
298
+ template = new_template
203
299
  end
204
300
  end
205
301
  end
@@ -35,6 +35,23 @@ module Wavy
35
35
  load(new_name, false)
36
36
  end
37
37
 
38
+ def guess_indent(file)
39
+ i = 0
40
+ file.each_line.with_index {|line, i|
41
+ break if i > 3
42
+ match = /^\s+/.match(line)
43
+ next unless match
44
+ return {
45
+ :tab? => line.start_with?("\t"),
46
+ :indent => match[0].size
47
+ }
48
+ }
49
+ return { # returns default settings
50
+ :tab? => true,
51
+ :indent => 4
52
+ }
53
+ end
54
+
38
55
  end
39
56
 
40
57
  end
data/lib/wavy/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Wavy
2
2
 
3
- VERSION = '0.0.4'
3
+ VERSION = '0.0.5'
4
4
 
5
5
  class Version
6
6
 
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wavy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Govaere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-11 00:00:00.000000000 Z
11
+ date: 2014-08-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Wavy is a simple templating engine for HTML Inspired By Sass
13
+ description: Wavy is a templating engine for preprocessing HTML, heavily influenced
14
+ by the simplicity of Sass. Think Sass for HTML.
14
15
  email: matthew.govaere@gmail.com
15
16
  executables:
16
17
  - wavy
@@ -57,5 +58,5 @@ rubyforge_project:
57
58
  rubygems_version: 2.4.1
58
59
  signing_key:
59
60
  specification_version: 4
60
- summary: A simple templating engine for preprocessing HTML.
61
+ summary: A simple templating engine for HTML – Inspired By Sass
61
62
  test_files: []