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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8426da28bdb893a064adf7e2e79a72791af6520b115185c41766f03749697b1c
4
- data.tar.gz: f03ae85175a83109aa75db59225cc7086e28651814d826cc163c61889408e724
3
+ metadata.gz: 5340ccbd34dc2766a2f0ed580bcca372cb71cd35d1f6c33009003ca112cd1bc5
4
+ data.tar.gz: 1946ed3fc268779af7f929a1648893b83dcd4883f96be5ca4c9f2db3947c783c
5
5
  SHA512:
6
- metadata.gz: e232e3273af876c58257603c9c0245ffd6350aa8a75f136f2da556128c28f2384d86925db66feee5f76b5e1373b4d90b5fdd0ec0d827b6eafb8f58d635655a89
7
- data.tar.gz: b152ed4020b693e72998fa9b7ee1277e99dc8601e58a133a2aa03ee58d2d75bb27acf01ff1a8ad245cf5e6a14bb617589d4b267f7f988a35cfc6aed30f3bee96
6
+ metadata.gz: 1591989f74b37a697e9ddf4dbd0345fcaddfe71d157e74a3825b383a1cfb5c7cf4bd14a1c3b12178b554f5493f34daaa432f38c62007e4002ddd8189bd8a25ee
7
+ data.tar.gz: 7c8b934f20ef7fe44d8d4aee3a46abd3a0c57f2d8ec86ff231f567cef08a22196e060541762b6704ba6e6ba01b1206d904bb1f79125b73965f56ed125309505c
@@ -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
- [@operator.to_s, *@values.map { |v| v.is_a?(Condition) ? v.encode : v } ]
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)
@@ -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
 
@@ -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.7
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-07-16 00:00:00.000000000 Z
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: