glug 0.0.7 → 0.0.8
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 +4 -4
- data/lib/glug/condition.rb +8 -1
- data/lib/glug/extensions.rb +18 -0
- data/lib/glug/layer.rb +1 -1
- data/lib/glug/stylesheet.rb +9 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5340ccbd34dc2766a2f0ed580bcca372cb71cd35d1f6c33009003ca112cd1bc5
|
4
|
+
data.tar.gz: 1946ed3fc268779af7f929a1648893b83dcd4883f96be5ca4c9f2db3947c783c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1591989f74b37a697e9ddf4dbd0345fcaddfe71d157e74a3825b383a1cfb5c7cf4bd14a1c3b12178b554f5493f34daaa432f38c62007e4002ddd8189bd8a25ee
|
7
|
+
data.tar.gz: 7c8b934f20ef7fe44d8d4aee3a46abd3a0c57f2d8ec86ff231f567cef08a22196e060541762b6704ba6e6ba01b1206d904bb1f79125b73965f56ed125309505c
|
data/lib/glug/condition.rb
CHANGED
@@ -54,6 +54,7 @@ module Glug # :nodoc:
|
|
54
54
|
def **(*args); Condition.new.from_key(:^ , self, args) end
|
55
55
|
def in(*args); Condition.new.from_key(:in, self, [[:literal,args.flatten]]) end
|
56
56
|
def [](*args); Condition.new.from_key(:at, args[0], [self]) end
|
57
|
+
def coerce(other); [Condition.new.just_value(other), self] end
|
57
58
|
|
58
59
|
def initialize
|
59
60
|
@values=[]
|
@@ -68,6 +69,11 @@ module Glug # :nodoc:
|
|
68
69
|
@values = list
|
69
70
|
self
|
70
71
|
end
|
72
|
+
def just_value(val)
|
73
|
+
@operator = nil
|
74
|
+
@values = [val]
|
75
|
+
self
|
76
|
+
end
|
71
77
|
|
72
78
|
def &(cond); merge(:all,cond) end
|
73
79
|
def |(cond); merge(:any,cond) end
|
@@ -96,7 +102,8 @@ module Glug # :nodoc:
|
|
96
102
|
# Encode into an array for GL JSON (recursive)
|
97
103
|
def encode
|
98
104
|
transform_underscores
|
99
|
-
|
105
|
+
values = @values.map { |v| v.is_a?(Condition) ? v.encode : v }
|
106
|
+
@operator.nil? ? values[0] : [@operator.to_s, *values]
|
100
107
|
end
|
101
108
|
def to_json(opts)
|
102
109
|
encode.to_json(opts)
|
data/lib/glug/extensions.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
require 'chroma'
|
2
|
+
require 'hsluv'
|
3
|
+
|
4
|
+
# Colour methods on Integer
|
5
|
+
|
2
6
|
class Integer
|
3
7
|
def chroma_hex(op,p)
|
4
8
|
("#"+to_s(16).rjust(6,'0')).paint.send(op,p).to_hex
|
@@ -6,4 +10,18 @@ class Integer
|
|
6
10
|
def chroma(op,p)
|
7
11
|
chroma_hex(op,p).gsub('#','0x').to_i(16)
|
8
12
|
end
|
13
|
+
def to_hex_color
|
14
|
+
'#' + to_s(16).rjust(6,'0')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Top-level colour generators
|
19
|
+
|
20
|
+
def hsluv(h,s,l)
|
21
|
+
arr = Hsluv.rgb_prepare(Hsluv.hsluv_to_rgb(h,s*100,l*100))
|
22
|
+
(arr[0]*256 + arr[1])*256 + arr[2]
|
23
|
+
end
|
24
|
+
def hsl(h,s,l)
|
25
|
+
rgb = Chroma::RgbGenerator::FromHslValues.new('hex6',h,s,l).generate[0]
|
26
|
+
((rgb.r).to_i*256 + (rgb.g).to_i)*256 + rgb.b.to_i
|
9
27
|
end
|
data/lib/glug/layer.rb
CHANGED
@@ -68,7 +68,7 @@ module Glug # :nodoc:
|
|
68
68
|
@uncascaded = nil # condition to add to non-cascaded layers
|
69
69
|
|
70
70
|
@kv[:source] ||= stylesheet.sources.find {|k,v| v[:default] }[0]
|
71
|
-
@kv[:source_layer] ||= args[:id]
|
71
|
+
@kv[:source_layer] ||= args[:id] if stylesheet.sources[@kv[:source]][:type]=="vector"
|
72
72
|
@child_num = 0 # incremented sublayer suffix
|
73
73
|
end
|
74
74
|
|
data/lib/glug/stylesheet.rb
CHANGED
@@ -4,13 +4,15 @@ module Glug # :nodoc:
|
|
4
4
|
# the main document object
|
5
5
|
|
6
6
|
class Stylesheet
|
7
|
-
attr_accessor :sources, :kv, :refs
|
7
|
+
attr_accessor :sources, :kv, :refs, :base_dir, :params
|
8
8
|
|
9
|
-
def initialize(&block)
|
9
|
+
def initialize(base_dir: nil, params: nil, &block)
|
10
10
|
@sources = {}
|
11
11
|
@kv = {}
|
12
12
|
@layers = []
|
13
13
|
@refs = {}
|
14
|
+
@base_dir = base_dir || ''
|
15
|
+
@params = params || {}
|
14
16
|
instance_eval(&block)
|
15
17
|
end
|
16
18
|
|
@@ -46,5 +48,10 @@ module Glug # :nodoc:
|
|
46
48
|
def _add_layer(layer)
|
47
49
|
@layers << layer
|
48
50
|
end
|
51
|
+
|
52
|
+
# Load file
|
53
|
+
def include_file(fn)
|
54
|
+
instance_eval(File.read(File.join(@base_dir, fn)))
|
55
|
+
end
|
49
56
|
end
|
50
57
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Fairhurst
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: neatjson
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: hsluv
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
description: Text-based markup for Mapbox GL styles
|
42
56
|
email: richard@systemeD.net
|
43
57
|
executables:
|