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 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: