feather 0.4.1 → 0.4.2

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: 1de807935a97f70d69017324bb6afde148c0670a
4
- data.tar.gz: addc943b185f849e2962b0cd0160e5262b5cdfb0
3
+ metadata.gz: 85c43bfc423dc5a8dbd77857b92a2c9d74bb73c2
4
+ data.tar.gz: 95d9b80ee144392fe22c7e107926f4d6aad4215c
5
5
  SHA512:
6
- metadata.gz: 99cc59b1e93a2cbac2190dd4df4eac34be97d9737c4ea13cb5cb5b933a388bfcfca9e7a41c256e6acb5863efea7e346b52c34458cf84281b39c85f099701123e
7
- data.tar.gz: 5e8f80df8cf82d39b4ceeb89f8408793c218a711034414601099c1c62754c2611659bbba1f3eab28728ccc07762a69ab197fba39392c2dc4161cc9bf94ac3f69
6
+ metadata.gz: b38495655005155dd0ef4d3d684bad79ab9ca71f3d530f7d845f67f1b69feecb188246fdacd70474e5aa7daf519f9b4dd80f9c72e8b928baae348105a8c19468
7
+ data.tar.gz: 2d6b49b9e1a689b771899874df3d889bf63c8a97d7268d48ba7c00de31121c735c1f58b66185281d8fb2bae7d4de89f6a564c1e1285b7812639795c5ffbb848f
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ before_install: gem install bundler
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.5
7
+ - 2.2.0
8
+ - 2.3.0
data/Gemfile CHANGED
@@ -1,5 +1,8 @@
1
- source :rubygems
1
+ source 'https://rubygems.org/'
2
+
3
+ gem 'addressable'
2
4
 
3
5
  group :development do
4
6
  gem 'jeweler'
7
+ gem 'minitest'
5
8
  end
data/README.md CHANGED
@@ -47,6 +47,6 @@ as a reference.
47
47
 
48
48
  ## Copyright
49
49
 
50
- Copyright (c) 2011-2013 Scott Tadman, The Working Group Inc.
50
+ Copyright (c) 2011-2015 Scott Tadman, The Working Group Inc.
51
51
  See LICENSE.txt for further details.
52
52
 
@@ -1,3 +1,6 @@
1
+ 0.4.2
2
+ - Updates to run clean with -w warnings turned on.
3
+ - Removing old YAML encoding stub and using encode_with(coder)
1
4
  0.4.1
2
5
  - Minor bugfixes with HTML-escaped content being specified with array values.
3
6
  0.4.0
data/Rakefile CHANGED
@@ -23,4 +23,4 @@ Rake::TestTask.new(:test) do |test|
23
23
  test.verbose = true
24
24
  end
25
25
 
26
- task :default => :test
26
+ task default: :test
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.4.2
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: feather 0.4.1 ruby lib
5
+ # stub: feather 0.4.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "feather"
9
- s.version = "0.4.1"
9
+ s.version = "0.4.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Scott Tadman"]
14
- s.date = "2015-01-26"
14
+ s.date = "2016-03-28"
15
15
  s.description = "A simple light-weight text templating system"
16
16
  s.email = "github@tadman.ca"
17
17
  s.extra_rdoc_files = [
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ ".travis.yml",
23
24
  "Gemfile",
24
25
  "LICENSE.txt",
25
26
  "README.md",
@@ -38,19 +39,25 @@ Gem::Specification.new do |s|
38
39
  ]
39
40
  s.homepage = "http://github.com/twg/feather"
40
41
  s.licenses = ["MIT"]
41
- s.rubygems_version = "2.2.2"
42
+ s.rubygems_version = "2.5.1"
42
43
  s.summary = "Light-weight text tempating system"
43
44
 
44
45
  if s.respond_to? :specification_version then
45
46
  s.specification_version = 4
46
47
 
47
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ s.add_runtime_dependency(%q<addressable>, [">= 0"])
48
50
  s.add_development_dependency(%q<jeweler>, [">= 0"])
51
+ s.add_development_dependency(%q<minitest>, [">= 0"])
49
52
  else
53
+ s.add_dependency(%q<addressable>, [">= 0"])
50
54
  s.add_dependency(%q<jeweler>, [">= 0"])
55
+ s.add_dependency(%q<minitest>, [">= 0"])
51
56
  end
52
57
  else
58
+ s.add_dependency(%q<addressable>, [">= 0"])
53
59
  s.add_dependency(%q<jeweler>, [">= 0"])
60
+ s.add_dependency(%q<minitest>, [">= 0"])
54
61
  end
55
62
  end
56
63
 
@@ -5,7 +5,7 @@ module Feather::Support
5
5
  # == Module/Mixin Methods =================================================
6
6
 
7
7
  def uri_escape(object)
8
- URI.escape(object.to_s, /[^a-z0-9\-\.]/i)
8
+ Addressable::URI.normalize_component(object.to_s, /[^a-z0-9\-\.]/i)
9
9
  end
10
10
 
11
11
  def html_escape(object)
@@ -4,8 +4,6 @@ class Feather::Template
4
4
  TOKEN_REGEXP = /((?:[^\{]|\{[^\{]|\{\{\{)+)|\{\{\s*([\&\%\$\.\:\#\^\*\/\=\!]|\?\!?)?([^\}]*)\}\}/.freeze
5
5
  TOKEN_TRIGGER = /\{\{/.freeze
6
6
 
7
- TO_YAML_PROPERTIES = %w[ @content @escape_method ].freeze
8
-
9
7
  # == Utility Classes ======================================================
10
8
 
11
9
  class TemplateHash < Hash; end
@@ -33,6 +31,8 @@ class Feather::Template
33
31
  # * :html - Automatically escape fields for HTML
34
32
  # * :text - Default mode, render all fields literally
35
33
  def initialize(content, options = nil)
34
+ @escape_method = nil
35
+
36
36
  if (options)
37
37
  if (source = options[:escape])
38
38
  case (source.to_sym)
@@ -62,7 +62,7 @@ class Feather::Template
62
62
  @_proc ||= begin
63
63
  source = ''
64
64
 
65
- self.compile(:source => source, :escape_method => @escape_method)
65
+ self.compile(source: source, escape_method: @escape_method)
66
66
 
67
67
  eval(source)
68
68
  end
@@ -88,7 +88,7 @@ class Feather::Template
88
88
  when Feather::Template, Proc, Array
89
89
  v
90
90
  when TOKEN_TRIGGER
91
- self.class.new(v, :escape => @escape_method)
91
+ self.class.new(v, escape: @escape_method)
92
92
  when nil
93
93
  nil
94
94
  else
@@ -107,7 +107,7 @@ class Feather::Template
107
107
  _parent = _parents.shift
108
108
 
109
109
  unless (_parent.is_a?(Feather::Template))
110
- _parent = self.class.new(_parent, :escape => @escape_method)
110
+ _parent = self.class.new(_parent, escape: @escape_method)
111
111
  end
112
112
 
113
113
  _parent.render(
@@ -208,7 +208,7 @@ class Feather::Template
208
208
  stack << [ :section, tag, VariableTracker.new ]
209
209
 
210
210
  source and source << "if(v);s<<v;v=v.is_a?(Array)?v[#{index}]:(v.is_a?(Hash)&&v[#{tag.inspect}]);"
211
- source and source << "h.iterate(v){|v|;v=h.cast_as_vars(v, s);"
211
+ source and source << "h.iterate(v){|_v|;v=h.cast_as_vars(_v, s);"
212
212
 
213
213
  sections and sections[tag] = true
214
214
  when '^'
@@ -294,9 +294,10 @@ class Feather::Template
294
294
  true
295
295
  end
296
296
 
297
- # For compatibility with YAML.dump
298
- def to_yaml_properties
299
- TO_YAML_PROPERTIES
297
+ # For compatibility with YAML
298
+ def encode_with(coder)
299
+ coder['content'] = @content
300
+ coder['escape_method'] = @escape_method
300
301
  end
301
302
 
302
303
  # For compatibility with the Psych YAML library
@@ -314,7 +315,7 @@ class Feather::Template
314
315
 
315
316
  # For compatibility with Marshal.dump
316
317
  def marshal_dump
317
- [ @content, { :escape => @escape_method } ]
318
+ [ @content, { escape: @escape_method } ]
318
319
  end
319
320
 
320
321
  # For compatibility with Marshal.load
@@ -1,4 +1,16 @@
1
1
  require 'rubygems'
2
+ require 'bundler'
3
+
4
+ begin
5
+ Bundler.setup(:default, :development)
6
+
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+
13
+ gem 'minitest'
2
14
  require 'minitest/autorun'
3
15
 
4
16
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -6,7 +18,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
6
18
 
7
19
  require 'feather'
8
20
 
9
- class Minitest::Test
21
+ class MiniTest::Test
10
22
  def assert_exception(exception_class, message = nil)
11
23
  begin
12
24
  yield
@@ -1,6 +1,6 @@
1
1
  require_relative './helper'
2
2
 
3
- class TestFeather < Minitest::Test
3
+ class TestFeather < MiniTest::Test
4
4
  def test_module_loaded
5
5
  assert Feather
6
6
 
@@ -2,9 +2,19 @@ require_relative './helper'
2
2
 
3
3
  require 'yaml'
4
4
 
5
- class TestFeatherSupport < Minitest::Test
6
- def test_variable_stack
7
- test = { :test => [ { :a => 'a', :b => 'b' }, { :c => 'c' } ] }
5
+ class TestFeatherSupport < MiniTest::Test
6
+ def test_variable_stack_with_symbol_keys
7
+ test = {
8
+ test: [
9
+ {
10
+ a: 'a',
11
+ b: 'b'
12
+ },
13
+ {
14
+ c: 'c'
15
+ }
16
+ ]
17
+ }
8
18
 
9
19
  variables = Feather::Support.variable_stack(test)
10
20
 
@@ -14,8 +24,20 @@ class TestFeatherSupport < Minitest::Test
14
24
  assert_equal 'b', variables[:test][0][:b]
15
25
  assert_equal 'c', variables[:test][1][:c]
16
26
  assert_equal nil, variables[:test][1][:d]
27
+ end
17
28
 
18
- test = { 'test' => [ { 'a' => :a, 'b' => :b }, { 'c' => :c } ] }
29
+ def test_variable_stack_with_string_keys
30
+ test = {
31
+ 'test' => [
32
+ {
33
+ 'a' => :a,
34
+ 'b' => :b
35
+ },
36
+ {
37
+ 'c' => :c
38
+ }
39
+ ]
40
+ }
19
41
 
20
42
  variables = Feather::Support.variable_stack(test)
21
43
 
@@ -27,13 +49,39 @@ class TestFeatherSupport < Minitest::Test
27
49
  assert_equal [ 'test' ], Feather::Support.variable_stack('test')
28
50
  assert_equal [ 'test' ], Feather::Support.variable_stack([ 'test' ], false)
29
51
  assert_equal [ 'test' ], Feather::Support.variable_stack([ 'test' ])
30
-
31
- variables = Feather::Support.variable_stack(:head => [ { :tag => 'meta' }, { :tag => 'link' } ])
52
+ end
53
+
54
+ def test_variable_stack_with_multiple_values
55
+ variables = Feather::Support.variable_stack(
56
+ head: [
57
+ {
58
+ tag: 'meta'
59
+ },
60
+ {
61
+ tag: 'link'
62
+ }
63
+ ]
64
+ )
32
65
 
33
66
  assert_equal 'meta', variables[:head][0][:tag]
34
67
  assert_equal 'link', variables[:head][1][:tag]
35
-
36
- test = { 'top' => { 'layer' => 'top', 't' => 'top', 'middle' => { 'layer' => 'middle', 'm' => 'middle', 'bottom' => { 'layer' => 'bottom', 'b' => 'bottom' } } } }
68
+ end
69
+
70
+ def test_variable_stack_with_deeper_nesting
71
+ test = {
72
+ 'top' => {
73
+ 'layer' => 'top',
74
+ 't' => 'top',
75
+ 'middle' => {
76
+ 'layer' => 'middle',
77
+ 'm' => 'middle',
78
+ 'bottom' => {
79
+ 'layer' => 'bottom',
80
+ 'b' => 'bottom'
81
+ }
82
+ }
83
+ }
84
+ }
37
85
 
38
86
  variables = Feather::Support.variable_stack(test)
39
87
 
@@ -2,7 +2,7 @@ require_relative './helper'
2
2
 
3
3
  require 'yaml'
4
4
 
5
- class TestFeatherTemplate < Minitest::Test
5
+ class TestFeatherTemplate < MiniTest::Test
6
6
  def test_empty_template
7
7
  template = Feather::Template.new('')
8
8
 
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feather
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Tadman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-26 00:00:00.000000000 Z
11
+ date: 2016-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
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'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: jeweler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,20 @@ dependencies:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  description: A simple light-weight text templating system
28
56
  email: github@tadman.ca
29
57
  executables: []
@@ -33,6 +61,7 @@ extra_rdoc_files:
33
61
  - README.md
34
62
  files:
35
63
  - ".document"
64
+ - ".travis.yml"
36
65
  - Gemfile
37
66
  - LICENSE.txt
38
67
  - README.md
@@ -68,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
97
  version: '0'
69
98
  requirements: []
70
99
  rubyforge_project:
71
- rubygems_version: 2.2.2
100
+ rubygems_version: 2.5.1
72
101
  signing_key:
73
102
  specification_version: 4
74
103
  summary: Light-weight text tempating system