liquid-string-drop 1.0.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 +7 -0
- data/Gemfile +5 -0
- data/lib/liquid/drop/str.rb +85 -0
- data/lib/liquid/drop/str/version.rb +7 -0
- metadata +95 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 288b61a2ba92e46f994f77c787c55908cffe6cfa
|
4
|
+
data.tar.gz: 64006ee7279f198a84267132a05ea9e553a1051d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 81bf68eb502af8df3572ba4cdc517841ec4ead7905b40dda445e7281ca11db4c9a5c4dff0f8b8ef98f9ea621c4790ff279edaa6acf71d157f7bc45cfd9e52c89
|
7
|
+
data.tar.gz: 89db1e4de3145c4a774d0628578faa0406a114d28c55a11c6b056cbcb693abae5466725710759339404879b666be4fe9c67ec7126d4849b48e7bd1509f9111df
|
data/Gemfile
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
module Liquid
|
2
|
+
class Drop
|
3
|
+
class Str < String
|
4
|
+
attr_writer :context
|
5
|
+
|
6
|
+
# --
|
7
|
+
# Mocks `#is_a?` so that Liquid thinks we are a
|
8
|
+
# drop. If it ever decides to ask.
|
9
|
+
# --
|
10
|
+
def is_a?(v)
|
11
|
+
v == Liquid::Drop || super(v)
|
12
|
+
end
|
13
|
+
|
14
|
+
# --
|
15
|
+
# Liquid version of `method_missing`, except it only
|
16
|
+
# works for Liquid and only takes the method.
|
17
|
+
# @return Error.
|
18
|
+
# --
|
19
|
+
def liquid_method_missing(method)
|
20
|
+
return nil unless @context && @context.strict_variables
|
21
|
+
raise Liquid::UndefinedDropMethod, \
|
22
|
+
"undefined method #{method}"
|
23
|
+
end
|
24
|
+
|
25
|
+
# --
|
26
|
+
# Invokes a method on the drop if it exist and is
|
27
|
+
# not blacklisted. We blacklist most methods by
|
28
|
+
# default if it's on `String`, `Array`, `Enumberable`
|
29
|
+
# `Hash` and this own class...
|
30
|
+
# --
|
31
|
+
def invoke_drop(m)
|
32
|
+
self.class.invokable?(m) ? send(m) : liquid_method_missing(m)
|
33
|
+
end
|
34
|
+
|
35
|
+
# --
|
36
|
+
def to_liquid
|
37
|
+
self
|
38
|
+
end
|
39
|
+
|
40
|
+
# --
|
41
|
+
def key?(_)
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
# --
|
46
|
+
# This is `.invokable?` when it comes to Liquids own
|
47
|
+
# source. We change it to discourage users from overriding
|
48
|
+
# the methods because this is a wrapper.
|
49
|
+
# --
|
50
|
+
def self.invokable?(m)
|
51
|
+
invokable_methods.include?(m.to_s)
|
52
|
+
end
|
53
|
+
|
54
|
+
# --
|
55
|
+
def self.invokable_methods
|
56
|
+
@invokable_methods ||= begin
|
57
|
+
Set.new(good.map(&:to_s))
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
def self.bad
|
63
|
+
@bad ||= begin bad = []
|
64
|
+
bad = bad | Drop.public_instance_methods
|
65
|
+
bad = bad | Array.public_instance_methods
|
66
|
+
bad = bad | Enumerable.public_instance_methods
|
67
|
+
bad = bad | String.public_instance_methods
|
68
|
+
bad = bad | Hash.public_instance_methods
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
def self.good
|
74
|
+
@good ||= [:to_liquid] | (
|
75
|
+
public_instance_methods - bad
|
76
|
+
)
|
77
|
+
end
|
78
|
+
|
79
|
+
# --
|
80
|
+
|
81
|
+
alias_method :===, :is_a?
|
82
|
+
alias_method :[], :invoke_drop
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: liquid-string-drop
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jordon Bedwell
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-08-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: luna-rspec-formatters
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.7'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.7'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: liquid
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '4.0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '4.0'
|
61
|
+
description: A drop that can be a string too
|
62
|
+
email:
|
63
|
+
- jordon@envygeeks.io
|
64
|
+
executables: []
|
65
|
+
extensions: []
|
66
|
+
extra_rdoc_files: []
|
67
|
+
files:
|
68
|
+
- Gemfile
|
69
|
+
- lib/liquid/drop/str.rb
|
70
|
+
- lib/liquid/drop/str/version.rb
|
71
|
+
homepage: http://github.com/envygeeks/liquid-string-drop
|
72
|
+
licenses:
|
73
|
+
- MIT
|
74
|
+
metadata: {}
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 2.1.0
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
requirements: []
|
90
|
+
rubyforge_project:
|
91
|
+
rubygems_version: 2.6.11
|
92
|
+
signing_key:
|
93
|
+
specification_version: 4
|
94
|
+
summary: A drop that is also a string
|
95
|
+
test_files: []
|