code_terminator 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b9dd80f0480385f782d16f013ea23b3e5da72d0
4
- data.tar.gz: 82e5bba3270ec1abca8d1d827f0bf14c41f82993
3
+ metadata.gz: 8aceb132c1e05ea755d7692ecf035f0918db62da
4
+ data.tar.gz: c9fdcf92ebcd55ef592fb2b5904fa0c3ef0278f1
5
5
  SHA512:
6
- metadata.gz: 8d26de5396d0d3fb12c5c1e667fe43633bd893ebccd21103236ed13366714ae456a9052d7c3d0f54f224e9e4b2cb7b4757cdb024681b6d23d56388dc07c30853
7
- data.tar.gz: d93ddd7ba64c42beb2e3ba276ff2c4c7dcc0e98e61c7174737a6dd3e4cdff4525f3196da5f4d33426fcb819bd393c71a5b1e73e89d2ec6577f7e48cdb56c0f00
6
+ metadata.gz: 70a295a63d6099ea31f0ac1392931d1264b383010416f2499ab200a20eed6b3ce60ecf342ac00f7ab221b2a298674c40ae4f0a04e57b3ce03c47f3e61a930ff0
7
+ data.tar.gz: f810a42cc618a59021f28effa1fea7061c18dfe43105e134b00ece5ae347a220d3438d5f51823815629770e436c2c470edbdd2417289244fe7ec85b9507f240a
data/README.md CHANGED
@@ -26,7 +26,7 @@ Or install it yourself as:
26
26
 
27
27
  ## Quick Start
28
28
 
29
- #HTML
29
+ #####HTML
30
30
  To parse HTML and match the file with html code you just need to do:
31
31
  ```ruby
32
32
  # code = code get from an editor
@@ -53,7 +53,7 @@ You will know that the code and the source file have the same html elements when
53
53
  # => ["h1 not exist"]
54
54
  ```
55
55
 
56
- # CSS
56
+ ##### CSS
57
57
  To parse CSS and match the file with css code you just need to do:
58
58
  ```ruby
59
59
  # code = code get from an editor
@@ -84,7 +84,7 @@ You will know that the code and the source file have the same css elements when
84
84
  ###match(source, code)
85
85
  Match if the code have the same elements than the exercise. Return an array with the mismatches.
86
86
 
87
- #HTML
87
+ ####HTML
88
88
  ```ruby
89
89
  # hola_mundo.html
90
90
  # => <h1>Come with me if you want to live!</h1>
@@ -96,7 +96,7 @@ Match if the code have the same elements than the exercise. Return an array with
96
96
  #
97
97
  ```
98
98
 
99
- #CSS
99
+ #####CSS
100
100
  ```ruby
101
101
  # test.css
102
102
  # => h1{ margin: 100px; }
@@ -110,13 +110,13 @@ Match if the code have the same elements than the exercise. Return an array with
110
110
 
111
111
  ###new_file(source, code)
112
112
  Create a Html/Css file with the code of the editor. Return a boolean that indicate if the file was created or not.
113
- #HTML
113
+ #####HTML
114
114
  ```ruby
115
115
  >> ct = CodeTerminator::Html.new
116
116
  >> ct.new_file("hola_mundo.html", "<h1>Come with me if you want to live!</h1>")
117
117
  # => true
118
118
  ```
119
- #CSS
119
+ #####CSS
120
120
  ```ruby
121
121
  >> ct = CodeTerminator::Css.new
122
122
  >> ct.new_file("hola_mundo.css", "h1{ margin: 50px; }")
@@ -125,13 +125,13 @@ Create a Html/Css file with the code of the editor. Return a boolean that indica
125
125
 
126
126
  ###read_file(source)
127
127
  Read a html file. Return the text of the file.
128
- #HTML
128
+ #####HTML
129
129
  ```ruby
130
130
  >> ct = CodeTerminator::Html.new
131
131
  >> ct.read_file("hola_mundo.html")
132
132
  # => "<h1>Come with me if you want to live!</h1>"
133
133
  ```
134
- #CSS
134
+ #####CSS
135
135
  ```ruby
136
136
  >> ct = CodeTerminator::Css.new
137
137
  >> ct.read_file("hola_mundo.css")
@@ -140,13 +140,13 @@ Read a html file. Return the text of the file.
140
140
 
141
141
  ###validate_syntax(code)
142
142
  Validate if the syntax is correct. Return an array with errors.
143
- #HTML
143
+ #####HTML
144
144
  ```ruby
145
145
  >> ct = CodeTerminator::Html.new
146
146
  >> ct.validate_syntax("<h1>Come with me if you want to live!</h1")
147
147
  # => [#<Nokogiri::XML::SyntaxError: expected '>'>]
148
148
  ```
149
- #CSS
149
+ #####CSS
150
150
  ```ruby
151
151
  >> ct = CodeTerminator::Css.new
152
152
  >> ct.validate_syntax("h1{ margi")
@@ -155,13 +155,13 @@ Validate if the syntax is correct. Return an array with errors.
155
155
 
156
156
  ###get_elements(source)
157
157
  Get html elements of a html file. Return a list of Nokogiri XML objects.
158
- #HTML
158
+ #####HTML
159
159
  ```ruby
160
160
  >> ct = CodeTerminator::Html.new
161
161
  >> ct.get_elements("hola_mundo.html")
162
- # => [#<Nokogiri::XML::Element:0x3fe3391547d8 name="h1" children=[#<Nokogiri::XML::Text:0x3fe33915474c "Come with me if you want to live!">]>, #<Nokogiri::XML::Text:0x3fe33915474c "Come with me if you want to live!">]
162
+ # => [{:parent=>"body", :tag=>"div", :attribute=>"class", :value=>"col-md-12"}, {:parent=>"div", :tag=>"h1"}, {:parent=>"h1", :tag=>"text", :content=>"Come with me if you want to live!"}]
163
163
  ```
164
- #CSS
164
+ #####CSS
165
165
  ```ruby
166
166
  >> ct = CodeTerminator::Css.new
167
167
  >> ct.get_elements("hola_mundo.css")
@@ -172,13 +172,13 @@ Get html elements of a html file. Return a list of Nokogiri XML objects.
172
172
  Get the elements of the code in html format. Return a string with elements in html.
173
173
  <br>
174
174
  **Get 'Elements Array' calling 'get_elements()'
175
- #HTML
175
+ #####HTML
176
176
  ```ruby
177
- CodeTerminator::Html.print_elements([#<Nokogiri::XML::Element:0x3fe31dc42bfc name="h1" children=[#<Nokogiri::XML::Text:0x3fe31dc42b70 "Come with me if you want to live!">]>, #<Nokogiri::XML::Text:0x3fe31dc42b70 "hola mundo">])
177
+ CodeTerminator::Html.print_elements(=> [{:parent=>"body", :tag=>"div", :attribute=>"class", :value=>"col-md-12"}, {:parent=>"div", :tag=>"h1"}, {:parent=>"h1", :tag=>"text", :content=>"Come with me if you want to live!"}] )
178
178
  # => "name = h1<br><hr>name = text<br>content = Come with me if you want to live!<br><hr>"
179
179
  #
180
180
  ```
181
- #CSS
181
+ #####CSS
182
182
  ```ruby
183
183
  CodeTerminator::Css.print_elements([{:selector=>"h1"}, {:selector=>"h1", :property=>"margin", :value=>"50px"}])
184
184
  # => "selector = h1<br><hr>property = margin<br>value = 50px<br><hr>"
Binary file
data/exercises/test.html CHANGED
@@ -1 +1,5 @@
1
- <h2>hola test</h2>
1
+ <body>
2
+ <div class="col-md-12">
3
+ <h1>Come with me if you want to live!</h1>
4
+ </div>
5
+ </body>
@@ -7,6 +7,7 @@ class CodeTerminator::Html
7
7
  @code = args[:code]
8
8
  @source = args[:source]
9
9
  @tags = Array.new
10
+ @elements = Array.new
10
11
  end
11
12
 
12
13
  # Create a Html file with the code of the editor. Return a boolean that indicate if the file was created or not.
@@ -44,13 +45,37 @@ class CodeTerminator::Html
44
45
  # source: (String)
45
46
 
46
47
  def get_elements(source)
48
+ @elements = Array.new
47
49
  reader = Nokogiri::HTML(File.open(source))
48
50
  reader = remove_empty_text(reader)
51
+ reader.at('body').attribute_nodes.each do |element_attribute|
52
+ node[:parent] = "html"
53
+ node[:tag] = "body"
54
+ node[:attribute] = element_attribute.name if !element_attribute.name.nil?
55
+ node[:value] = element_attribute.value if !element_attribute.value.nil?
56
+ @elements << node
57
+ end
49
58
  reader.at('body').children.each do |child|
50
- @tags.push(child)
51
- add_children(child) if child.children.any?
59
+ if child.attribute_nodes.empty?
60
+ node = Hash.new
61
+ node[:parent] = "body"
62
+ node[:tag] = child.name
63
+ node[:content] = child.text if child.text?
64
+ @elements << node
65
+ else
66
+ child.attribute_nodes.each do |element_attribute|
67
+ node = Hash.new
68
+ node[:parent] = "body"
69
+ node[:tag] = child.name
70
+ node[:attribute] = element_attribute.name if !element_attribute.name.nil?
71
+ node[:value] = element_attribute.value if !element_attribute.value.nil?
72
+ @elements << node
73
+ end
74
+ end
75
+
76
+ add_children(child) if child.children.any?
52
77
  end
53
- @tags
78
+ @elements
54
79
  end
55
80
 
56
81
  # Validate if the syntax is correct. Return an array with Nokogiri errors.
@@ -128,11 +153,11 @@ class CodeTerminator::Html
128
153
  def print_elements(elements)
129
154
  text = ""
130
155
  elements.each do |child|
131
- text << "name = " + child.name + "<br>"
132
- text << "content = " + child.text + "<br>" if child.text?
133
- child.attribute_nodes.each do |child_attribute|
134
- text << child.name + " attribute = " + child_attribute.name + " - " + child_attribute.value + "<br>"
135
- end
156
+ text << "parent = " + child[:parent] + "<br>" if !child[:parent].nil?
157
+ text << "tag = " + child[:tag] + "<br>" if !child[:tag].nil?
158
+ text << "attribute = " + child[:attribute] + "<br>" if !child[:attribute].nil?
159
+ text << "value = " + child[:value] + "<br>" if !child[:value].nil?
160
+ text << "content = " + child[:content] + "<br>" if !child[:content].nil?
136
161
  text << "<hr>"
137
162
  end
138
163
  text
@@ -160,26 +185,47 @@ class CodeTerminator::Html
160
185
 
161
186
  elements = get_elements(source)
162
187
  #@elements = Html::PrintElements.call(elements)
188
+ # '[{:parent=>"body", :tag=>"div"}, {:parent=>"body", :tag=>"div", :attribute=>"class", :value=>"col-md-12"}, {:parent=>"div", :tag=>"h2"}, {:parent=>"h2", :tag=>"text", :content=>"hola test"}, {:parent=>"div", :tag=>"h1"}] '
163
189
 
164
- elements.each do |element|
165
- if element.name == "text"
166
- #code if element is text
190
+ elements.each do |e|
191
+ item = e[:tag]
192
+ if item=="text"
193
+ if !e[:content].nil?
194
+ if code.css(e[:parent]).text != e[:content]
195
+ html_errors << e[:parent] + " haven't the same text " + e[:content]
196
+ end
197
+ e[:content] == code.css()
198
+ end
199
+ #manage text
167
200
  else
168
- if code.css(element.name).length == 0
169
- html_errors << element.name + " not exist"
170
- else
171
- element.attribute_nodes.each do |element_attribute|
172
- if !code.css(element.name).attribute(element_attribute.name).nil?
173
- if code.css(element.name).attribute(element_attribute.name).value != element_attribute.value
174
- html_errors << element_attribute.name + " not is the same value " + element_attribute.value
175
- end
176
- else
177
- html_errors << element_attribute.name + " not exist"
201
+ if code.css(e[:tag]).length > 0
202
+
203
+ if !e[:attribute].nil?
204
+ if code.css(e[:tag]).attribute(e[:attribute]).nil?
205
+ html_errors << e[:attribute] + " not exist in " + e[:tag]
206
+ else
207
+ if code.css(e[:tag]).attribute(e[:attribute]).value != e[:value]
208
+ html_errors << e[:attribute] + " not is the same value " + e[:value]
178
209
  end
179
210
  end
180
211
  end
212
+
213
+ if code.at_css(e[:tag]).parent.name != e[:parent]
214
+ html_errors << e[:tag] + " not exist in " + e[:parent]
215
+ end
216
+
217
+ else
218
+
219
+ #if code.css(e[:tag]).parent.name != e[:parent]
220
+ #html_errors << e[:tag] + " not exist in " + e[:parent]
221
+ #end
222
+
181
223
  end
224
+
225
+ end
182
226
  end
227
+
228
+
183
229
  html_errors
184
230
  end
185
231
 
@@ -187,7 +233,22 @@ class CodeTerminator::Html
187
233
 
188
234
  def add_children(parent)
189
235
  parent.children.each do |child|
190
- @tags.push(child)
236
+ if child.attribute_nodes.empty?
237
+ node = Hash.new
238
+ node[:parent] = parent.name
239
+ node[:tag] = child.name
240
+ node[:content] = child.text if child.text?
241
+ @elements << node
242
+ else
243
+ child.attribute_nodes.each do |element_attribute|
244
+ node = Hash.new
245
+ node[:parent] = parent.name
246
+ node[:tag] = child.name
247
+ node[:attribute] = element_attribute.name if !element_attribute.name.nil?
248
+ node[:value] = element_attribute.value if !element_attribute.value.nil?
249
+ @elements << node
250
+ end
251
+ end
191
252
  add_children(child) if child.children.any?
192
253
  end
193
254
  end
@@ -1,3 +1,3 @@
1
1
  module CodeTerminator
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_terminator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evelin Ponce
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-24 00:00:00.000000000 Z
11
+ date: 2016-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -77,6 +77,7 @@ files:
77
77
  - code_terminator-0.2.0.gem
78
78
  - code_terminator-0.2.1.gem
79
79
  - code_terminator-0.2.2.gem
80
+ - code_terminator-0.2.3.gem
80
81
  - code_terminator.gemspec
81
82
  - exe/code_terminator
82
83
  - exercises/new.html