glug 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|