habaki 0.5.3 → 0.5.6

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
  SHA256:
3
- metadata.gz: 99a0d86e6c6dc0b69d2d83a359986c92875c4139e8df27897ffb44ad05d6d2fa
4
- data.tar.gz: 8c83b1a623518634131e6786b69128588ced9b1e0093f94d9ac6a972d1b1f3b5
3
+ metadata.gz: a83ac7e15a1048a46ffe3f813ebbd7b6b148b6bcb38740c77c0a8a51192211c1
4
+ data.tar.gz: 2f0e6b79c7d2b2c845f7133c802e4c73761dda99b03048da244e068946540f14
5
5
  SHA512:
6
- metadata.gz: d8488e134dbe6ff0c370c94bee15b423c0efe7f1b29d789d3f333777469a9c36e9fca192380c48d8962ce3a2cfb6b0f116f20198cec98558ea5a5ede51153283
7
- data.tar.gz: 4cb0de2c9ad929bafd4218f1d46cd888a0180b0102d70526e896d905eb807ad42d3e369b25b3d5759fe636c61fff32de7b42472e688f0ed031d0554ede3f9883
6
+ metadata.gz: 2115de373c13a3b52e7c8b1cb8da6c5336047c0c2e6dc87e6b6e02d968070e73f5b4de39f1386783dd573b66120244062053c7dffd1feb5da7ca09c17e2a9ce5
7
+ data.tar.gz: 3ebae27ad8bba15883250e5e119cc10aa6c92d970f59b1edba25ea43bd4f9b89eaeecfe1f8b07956b275a6f43e98eb12c3070a12e7809f7e304aa832ec0be8d1
@@ -165,7 +165,7 @@ VALUE rb_error_message(VALUE self)
165
165
  {
166
166
  KatanaError *c_err;
167
167
  Data_Get_Struct(self, KatanaError, c_err);
168
- return rb_str_new2(c_err->message);
168
+ return UTF8_STR_NEW(c_err->message);
169
169
  }
170
170
 
171
171
  /*
@@ -16,6 +16,8 @@
16
16
  #include "src/katana.h"
17
17
  #include "src/selector.h"
18
18
 
19
+ #define UTF8_STR_NEW(val) rb_enc_associate_index(rb_str_new2(val), rb_enc_find_index("UTF-8"))
20
+
19
21
  /* Array */
20
22
 
21
23
  VALUE rb_array_length(VALUE array);
@@ -13,7 +13,7 @@ VALUE rb_declaration_prop(VALUE self)
13
13
  KatanaDeclaration *c_decl;
14
14
  Data_Get_Struct(self, KatanaDeclaration, c_decl);
15
15
  if (c_decl->property)
16
- return rb_str_new2(c_decl->property);
16
+ return UTF8_STR_NEW(c_decl->property);
17
17
  else
18
18
  Qnil;
19
19
  }
@@ -286,10 +286,10 @@ VALUE rb_value_value(VALUE self)
286
286
  val = rb_float_new(c_val->fValue);
287
287
  break;
288
288
  case KATANA_VALUE_IDENT:
289
- val = rb_str_new2(c_val->string);
289
+ val = UTF8_STR_NEW(c_val->string);
290
290
  break;
291
291
  case KATANA_VALUE_STRING:
292
- val = rb_str_new2(c_val->string);
292
+ val = UTF8_STR_NEW(c_val->string);
293
293
  break;
294
294
  case KATANA_VALUE_PARSER_FUNCTION:
295
295
  {
@@ -304,19 +304,19 @@ VALUE rb_value_value(VALUE self)
304
304
  // return katana_stringify_value_list(parser, value->list);
305
305
  break;
306
306
  case KATANA_VALUE_PARSER_HEXCOLOR:
307
- val = rb_str_new2(c_val->string);
307
+ val = UTF8_STR_NEW(c_val->string);
308
308
  break;
309
309
  case KATANA_VALUE_URI:
310
- val = rb_str_new2(c_val->string);
310
+ val = UTF8_STR_NEW(c_val->string);
311
311
  break;
312
312
  case KATANA_VALUE_UNICODE_RANGE:
313
- val = rb_str_new2(c_val->string);
313
+ val = UTF8_STR_NEW(c_val->string);
314
314
  break;
315
315
  case KATANA_VALUE_DIMENSION:
316
- val = rb_str_new2(c_val->string);
316
+ val = UTF8_STR_NEW(c_val->string);
317
317
  break;
318
318
  case KATANA_VALUE_UNKNOWN:
319
- val = rb_str_new2(c_val->string);
319
+ val = UTF8_STR_NEW(c_val->string);
320
320
  break;
321
321
  default:
322
322
  fprintf(stderr, "KATANA: unsupported value unit %d (%s)\n", c_val->unit, c_val->string);
@@ -336,7 +336,7 @@ VALUE rb_value_function_name(VALUE self)
336
336
  KatanaValueFunction *c_val;
337
337
  Data_Get_Struct(self, KatanaValueFunction, c_val);
338
338
  if (c_val->name)
339
- return rb_str_new2(c_val->name);
339
+ return UTF8_STR_NEW(c_val->name);
340
340
  else
341
341
  return Qnil;
342
342
  }
@@ -371,12 +371,6 @@ void init_katana_declaration()
371
371
 
372
372
  rb_define_method(rb_Declaration, "position", rb_declaration_position, 0);
373
373
 
374
- // Declaration
375
- rb_Declaration = rb_define_class_under(rb_Katana, "Declaration", rb_cObject);
376
- rb_define_method(rb_Declaration, "property", rb_declaration_prop, 0);
377
- rb_define_method(rb_Declaration, "important", rb_declaration_important, 0);
378
- rb_define_method(rb_Declaration, "values", rb_declaration_values, 0);
379
-
380
374
  // Value
381
375
  rb_Value = rb_define_class_under(rb_Katana, "Value", rb_cObject);
382
376
  rb_define_method(rb_Value, "value", rb_value_value, 0);
@@ -104,7 +104,7 @@ VALUE rb_namespace_rule_prefix(VALUE self)
104
104
  KatanaNamespaceRule *c_rule;
105
105
  Data_Get_Struct(self, KatanaNamespaceRule, c_rule);
106
106
  if (c_rule->prefix)
107
- return rb_str_new2(c_rule->prefix);
107
+ return UTF8_STR_NEW(c_rule->prefix);
108
108
  else
109
109
  return Qnil;
110
110
  }
@@ -117,7 +117,7 @@ VALUE rb_namespace_rule_uri(VALUE self)
117
117
  KatanaNamespaceRule *c_rule;
118
118
  Data_Get_Struct(self, KatanaNamespaceRule, c_rule);
119
119
  if (c_rule->prefix)
120
- return rb_str_new2(c_rule->uri);
120
+ return UTF8_STR_NEW(c_rule->uri);
121
121
  else
122
122
  return Qnil;
123
123
  }
@@ -13,7 +13,7 @@ VALUE rb_name_local(VALUE self)
13
13
  KatanaQualifiedName *c_name;
14
14
  Data_Get_Struct(self, KatanaQualifiedName, c_name);
15
15
  if (c_name->local)
16
- return rb_str_new2(c_name->local);
16
+ return UTF8_STR_NEW(c_name->local);
17
17
  else
18
18
  return Qnil;
19
19
  }
@@ -26,7 +26,7 @@ VALUE rb_name_prefix(VALUE self)
26
26
  KatanaQualifiedName *c_name;
27
27
  Data_Get_Struct(self, KatanaQualifiedName, c_name);
28
28
  if (c_name->prefix)
29
- return rb_str_new2(c_name->prefix);
29
+ return UTF8_STR_NEW(c_name->prefix);
30
30
  else
31
31
  return Qnil;
32
32
  }
@@ -39,7 +39,7 @@ VALUE rb_name_uri(VALUE self)
39
39
  KatanaQualifiedName *c_name;
40
40
  Data_Get_Struct(self, KatanaQualifiedName, c_name);
41
41
  if (c_name->uri)
42
- return rb_str_new2(c_name->uri);
42
+ return UTF8_STR_NEW(c_name->uri);
43
43
  else
44
44
  return Qnil;
45
45
  }
@@ -475,10 +475,7 @@ VALUE rb_selector_data_value(VALUE self)
475
475
  KatanaSelectorRareData *c_sel;
476
476
  Data_Get_Struct(self, KatanaSelectorRareData, c_sel);
477
477
  if (c_sel->value)
478
- {
479
- // force UTF-8
480
- return rb_enc_associate_index(rb_str_new2(c_sel->value), rb_enc_find_index("UTF-8"));
481
- }
478
+ return UTF8_STR_NEW(c_sel->value);
482
479
  else
483
480
  return Qnil;
484
481
  }
@@ -504,7 +501,7 @@ VALUE rb_selector_data_argument(VALUE self)
504
501
  KatanaSelectorRareData *c_sel;
505
502
  Data_Get_Struct(self, KatanaSelectorRareData, c_sel);
506
503
  if (c_sel->argument)
507
- return rb_str_new2(c_sel->argument);
504
+ return UTF8_STR_NEW(c_sel->argument);
508
505
  else
509
506
  return Qnil;
510
507
  }
@@ -6,7 +6,7 @@ module Habaki
6
6
 
7
7
  # @param [String] encoding
8
8
  def initialize(encoding = nil)
9
- @encoding
9
+ @encoding = encoding
10
10
  end
11
11
 
12
12
  # @param [Formatter::Base] format
@@ -46,7 +46,8 @@ module Habaki
46
46
  when 4
47
47
  values = declaration.values
48
48
  else
49
- raise ArgumentError, "Cannot parse #{declaration.values}"
49
+ # "Habaki error: Cannot parse #{property}: #{declaration.values} (#{declaration.values.length} values)"
50
+ next
50
51
  end
51
52
 
52
53
  replacement = [top, right, bottom, left].zip(values).to_h
@@ -28,7 +28,7 @@ module Habaki
28
28
  def traverse(&block)
29
29
  block.call self
30
30
  @children.each do |child|
31
- child.traverse &block
31
+ child.traverse(&block)
32
32
  end
33
33
  end
34
34
 
@@ -111,7 +111,7 @@ module Habaki
111
111
  data.each do |k, v|
112
112
  begin
113
113
  @properties[k] = Tree.parse(v)
114
- rescue FormalSyntaxError => e
114
+ rescue FormalSyntaxError #=> e
115
115
  #STDERR.puts("#{k}: #{e}")
116
116
  end
117
117
  end
data/lib/habaki/rules.rb CHANGED
@@ -179,7 +179,7 @@ module Habaki
179
179
  end
180
180
 
181
181
  def each_rule(&block)
182
- each &block
182
+ each(&block)
183
183
  end
184
184
 
185
185
  # @param [Formatter::Base] format
@@ -4,6 +4,12 @@ module Habaki
4
4
  # @return [Symbol]
5
5
  attr_accessor :relation
6
6
 
7
+ def initialize(*args)
8
+ super(*args)
9
+
10
+ @relation = nil
11
+ end
12
+
7
13
  # does every sub selectors match {Visitor::Element} ?
8
14
  # @param [Visitor::Element] element
9
15
  # @param [Specificity, nil] specificity
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: habaki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien Boulnois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-14 00:00:00.000000000 Z
11
+ date: 2022-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri