hamlit 2.0.2 → 2.1.0

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: 658acdc2d3ba2e0c67b1b51e181b27fc9b3ede4f
4
- data.tar.gz: 05cd64cef646b2af0252dff93f68594816385e62
3
+ metadata.gz: 28e31e01cf12674dcc7b8330ff324e2a02c98c5d
4
+ data.tar.gz: 373c61913cd374e989b8c0a6f35ab36a59282920
5
5
  SHA512:
6
- metadata.gz: 92ed91af56b3e423dd3cd317826872dff66987ee46351cb769196d730943ee19d93a15e2e9c07999bb9fdff7aaf5e071732c11aafafaf54d0cb40e5804d2bffa
7
- data.tar.gz: 2ad62fc2df52f1d42c459136e295d25e3f74718232d5369c972024fa40655f7537b3d8d41cc562145ad1db28d682a247b19c96e7cc53cf1b1dfa9e25b40fc285
6
+ metadata.gz: 9330c82678ae6fd23fe70b15a3460f5a6df890fe0008d18f8f2396dd749c66defb62a32cfa46d57e0b5360172327c5c9793a66c186e47ea9cc9d00e6f62fdef8
7
+ data.tar.gz: 381b81db56a1e1230e84080c1d5eb1b70ede41b46f976708a69f15a556a483a62b801976c2f80e71980c46a4a930d933c43de7d9a8a39ef97370d3ec94dfdf95
@@ -14,8 +14,6 @@ matrix:
14
14
  env: TASK=test
15
15
  - rvm: 2.2
16
16
  env: TASK=test
17
- - rvm: 2.2
18
- env: TASK=bench TEMPLATE=benchmark/dynamic_boolean_attribute.haml
19
17
  - rvm: 2.2
20
18
  env: TASK=bench TEMPLATE=benchmark/boolean_attribute.haml,benchmark/class_attribute.haml,benchmark/id_attribute.haml,benchmark/data_attribute.haml,benchmark/common_attribute.haml
21
19
  - rvm: 2.2
@@ -31,7 +29,6 @@ matrix:
31
29
  - rvm: 2.2
32
30
  env: TASK=bench TEMPLATE=test/haml/templates/standard.haml COMPILE=1
33
31
  allow_failures:
34
- - env: TASK=bench TEMPLATE=benchmark/dynamic_boolean_attribute.haml
35
32
  - env: TASK=bench TEMPLATE=benchmark/boolean_attribute.haml,benchmark/class_attribute.haml,benchmark/id_attribute.haml,benchmark/data_attribute.haml,benchmark/common_attribute.haml
36
33
  - env: TASK=bench TEMPLATE=benchmark/dynamic_attributes/boolean_attribute.haml,benchmark/dynamic_attributes/class_attribute.haml,benchmark/dynamic_attributes/id_attribute.haml,benchmark/dynamic_attributes/data_attribute.haml,benchmark/dynamic_attributes/common_attribute.haml
37
34
  - env: TASK=bench SLIM_BENCH=1
@@ -7,6 +7,23 @@ project adheres to [Semantic Versioning](http://semver.org/). This change log is
7
7
  ## [HEAD]
8
8
  - No changes
9
9
 
10
+ ## [2.1.0] - 2015-12-14
11
+
12
+ ## Added
13
+
14
+ - `-I` and `-r` options are added to `hamlit render` command
15
+ [#37](https://github.com/k0kubun/hamlit/issues/37). *Thanks to @jhurliman*
16
+
17
+ ## Changed
18
+
19
+ - Dropped obsolete `escape_utils` gem dependency
20
+ [#48](https://github.com/k0kubun/hamlit/pull/48). *Thanks to @eagletmt*
21
+
22
+ ## Fixed
23
+
24
+ - Accept NUL character in attribute keys
25
+ [#49](https://github.com/k0kubun/hamlit/pull/49). *Thanks to @eagletmt*
26
+
10
27
  ## [2.0.2] - 2015-12-12
11
28
 
12
29
  ### Fixed
@@ -9,7 +9,9 @@ require_relative '../utils/benchmark_ips_extension'
9
9
  h = { 'user' => { id: 1234, name: 'k0kubun' }, book_id: 5432 }
10
10
 
11
11
  Benchmark.ips do |x|
12
- x.report("Faml::AB.build") { Faml::AttributeBuilder.build("'", true, nil, data: h) }
13
- x.report("Hamlit.build_data") { Hamlit::AttributeBuilder.build_data(true, "'", h) }
12
+ quote = "'"
13
+ faml_options = { data: h }
14
+ x.report("Faml::AB.build") { Faml::AttributeBuilder.build(quote, true, nil, faml_options) }
15
+ x.report("Hamlit.build_data") { Hamlit::AttributeBuilder.build_data(true, quote, h) }
14
16
  x.compare!
15
17
  end
@@ -29,9 +29,9 @@ delete_falsey_values(VALUE values)
29
29
  }
30
30
 
31
31
  static int
32
- str_eq(VALUE str, const char *cstr)
32
+ str_eq(VALUE str, const char *cstr, long n)
33
33
  {
34
- return strcmp(RSTRING_PTR(str), cstr) == 0;
34
+ return RSTRING_LEN(str) == n && memcmp(RSTRING_PTR(str), cstr, n) == 0;
35
35
  }
36
36
 
37
37
  static VALUE
@@ -303,7 +303,7 @@ merge_all_attrs_i(VALUE key, VALUE value, VALUE merged)
303
303
  VALUE array;
304
304
 
305
305
  key = to_s(key);
306
- if (str_eq(key, "id") || str_eq(key, "class") || str_eq(key, "data")) {
306
+ if (str_eq(key, "id", 2) || str_eq(key, "class", 5) || str_eq(key, "data", 4)) {
307
307
  array = rb_hash_aref(merged, key);
308
308
  if (NIL_P(array)) {
309
309
  array = rb_ary_new2(1);
@@ -333,7 +333,7 @@ int
333
333
  is_boolean_attribute(VALUE key)
334
334
  {
335
335
  VALUE boolean_attributes;
336
- if (str_eq(rb_str_substr(key, 0, 5), "data-")) return 1;
336
+ if (str_eq(rb_str_substr(key, 0, 5), "data-", 5)) return 1;
337
337
 
338
338
  boolean_attributes = rb_const_get(mAttributeBuilder, id_boolean_attributes);
339
339
  return RTEST(rb_ary_includes(boolean_attributes, key));
@@ -412,11 +412,11 @@ hamlit_build(VALUE escape_attrs, VALUE quote, VALUE format, VALUE object_ref, VA
412
412
  for (i = 0; i < RARRAY_LEN(keys); i++) {
413
413
  key = rb_ary_entry(keys, i);
414
414
  value = rb_hash_aref(attrs, key);
415
- if (str_eq(key, "id")) {
415
+ if (str_eq(key, "id", 2)) {
416
416
  hamlit_build_for_id(escape_attrs, quote, buf, value);
417
- } else if (str_eq(key, "class")) {
417
+ } else if (str_eq(key, "class", 5)) {
418
418
  hamlit_build_for_class(escape_attrs, quote, buf, value);
419
- } else if (str_eq(key, "data")) {
419
+ } else if (str_eq(key, "data", 4)) {
420
420
  hamlit_build_for_data(escape_attrs, quote, buf, value);
421
421
  } else if (is_boolean_attribute(key)) {
422
422
  hamlit_build_for_boolean(escape_attrs, quote, format, buf, key, value);
@@ -20,7 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.extensions = ['ext/hamlit/extconf.rb']
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'escape_utils'
24
23
  spec.add_dependency 'temple', '~> 0.7.6'
25
24
  spec.add_dependency 'thor'
26
25
  spec.add_dependency 'tilt'
@@ -4,7 +4,10 @@ require 'thor'
4
4
  module Hamlit
5
5
  class CLI < Thor
6
6
  desc 'render HAML', 'Render haml template'
7
+ option :load_path, type: :string, aliases: %w[-I]
8
+ option :require, type: :string, aliases: %w[-r]
7
9
  def render(file)
10
+ process_load_options
8
11
  code = generate_code(file)
9
12
  puts eval(code)
10
13
  end
@@ -27,6 +30,18 @@ module Hamlit
27
30
 
28
31
  private
29
32
 
33
+ def process_load_options
34
+ if options[:load_path]
35
+ options[:load_path].split(':').each do |dir|
36
+ $LOAD_PATH.unshift(dir) unless $LOAD_PATH.include?(dir)
37
+ end
38
+ end
39
+
40
+ if options[:require]
41
+ require options[:require]
42
+ end
43
+ end
44
+
30
45
  def generate_code(file)
31
46
  template = File.read(file)
32
47
  if options[:actionview]
@@ -1,3 +1,3 @@
1
1
  module Hamlit
2
- VERSION = '2.0.2'
2
+ VERSION = '2.1.0'
3
3
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamlit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-11 00:00:00.000000000 Z
11
+ date: 2015-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: escape_utils
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: temple
29
15
  requirement: !ruby/object:Gem::Requirement