assignable_values 1.0.1 → 1.1.0

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: 44f802c26aa733cde6ffe0310fdf880392a20a7f8f5b2e5ce65fed89d7c21011
4
- data.tar.gz: fbbe479435d4bf2614df55e98269d990a85667ce58c49fc95074dfc9944da345
3
+ metadata.gz: 50d91e6c4106d54f8633e3a77ccb71e8965e4c22201574980eaf15ffea0ed7ac
4
+ data.tar.gz: 57d2765dab9e0b60030c08822ee55e478b5c0acb6e7601047047219da2efcabc
5
5
  SHA512:
6
- metadata.gz: cd6bb917d41ecf8db5e80f55a6045fee995f50fe77ca9e4f15f830e54fe95077c4323a231a9b68e7967ec9d0059cd870f5c61de671deb424619d176cd10a3b08
7
- data.tar.gz: e6f6a2683ef866be714c6067ffc9dbc58d3c4b35fb68a81c0c8aebfa47ce575f6e2111275af0d86526d124bba1b5387ddca17998f637c69f9f583ca825bfa5ac
6
+ metadata.gz: a32ca256400f51a6d6fd9654cb745003608394aede06a92b58af2de81f1ac42147137c59de775f5d730e882c770fa1921e0f0c3272c7c2307091d08d7b25c9f2
7
+ data.tar.gz: 0a6fb7760c54e0ae6c162002d819d0cae6c39601c5e7851444a1e5773f547b9c5d2c76e15423def89e620f601b4686ad0fd7768c35bcd1534b09856251362f87
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-20.04
13
13
  services:
14
14
  mysql:
15
- image: mysql:5.6
15
+ image: mysql:5.7
16
16
  env:
17
17
  MYSQL_ROOT_PASSWORD: password
18
18
  ports:
data/CHANGELOG.md CHANGED
@@ -12,6 +12,12 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
12
12
 
13
13
  -
14
14
 
15
+ ## 1.1.0 - 2024-12-05
16
+
17
+ ### Compatible changes
18
+
19
+ - Add complete support for attributes that are available through store accessors
20
+
15
21
  ## 1.0.1 - 2024-08-27
16
22
 
17
23
  - Hook into railties correctly
data/Gemfile.5.0.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assignable_values (1.0.1)
4
+ assignable_values (1.1.0)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
data/Gemfile.5.1.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assignable_values (1.0.1)
4
+ assignable_values (1.1.0)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
data/Gemfile.5.1.pg.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assignable_values (1.0.1)
4
+ assignable_values (1.1.0)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
data/Gemfile.6.1.pg.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assignable_values (1.0.1)
4
+ assignable_values (1.1.0)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
data/Gemfile.7.1.pg.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assignable_values (1.0.1)
4
+ assignable_values (1.1.0)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,5 +1,21 @@
1
- assignable_values - Enums on vitamins [![Tests](https://github.com/makandra/assignable_values/workflows/Tests/badge.svg)](https://github.com/makandra/assignable_values/actions)
2
- =====================================
1
+ <p>
2
+ <a href="https://makandra.de/">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: light)" srcset="media/makandra-with-bottom-margin.light.svg">
5
+ <source media="(prefers-color-scheme: dark)" srcset="media/makandra-with-bottom-margin.dark.svg">
6
+ <img align="right" width="25%" alt="makandra" src="media/makandra-with-bottom-margin.light.svg">
7
+ </picture>
8
+ </a>
9
+
10
+ <picture>
11
+ <source media="(prefers-color-scheme: light)" srcset="media/logo.light.shapes.svg">
12
+ <source media="(prefers-color-scheme: dark)" srcset="media/logo.dark.shapes.svg">
13
+ <img width="400" alt="assignable_values" role="heading" aria-level="1" src="media/logo.light.shapes.svg">
14
+ </picture>
15
+ </p>
16
+
17
+ [![Tests](https://github.com/makandra/assignable_values/workflows/Tests/badge.svg)](https://github.com/makandra/assignable_values/actions)
18
+
3
19
 
4
20
  `assignable_values` lets you restrict the values that can be assigned to attributes or associations of ActiveRecord models. You can think of it as enums where the list of allowed values is generated at runtime and the value is checked during validation.
5
21
 
@@ -107,10 +107,10 @@ module AssignableValues
107
107
  end
108
108
 
109
109
  def has_previously_saved_value?(record)
110
- if record.respond_to?(:attribute_in_database)
111
- !record.new_record? # Rails >= 5.1
112
- else
113
- !record.new_record? && record.respond_to?(value_was_method) # Rails <= 5.0
110
+ if record.respond_to?(:attribute_in_database) # Rails >= 5.1
111
+ !record.new_record?
112
+ else # Rails <= 5.0
113
+ !record.new_record? && record.respond_to?(value_was_method)
114
114
  end
115
115
  end
116
116
 
@@ -119,10 +119,10 @@ module AssignableValues
119
119
  end
120
120
 
121
121
  def value_was(record)
122
- if record.respond_to?(:attribute_in_database)
123
- record.attribute_in_database(:"#{property}") # Rails >= 5.1
124
- else
125
- record.send(value_was_method) # Rails <= 5.0
122
+ if record.respond_to?(:attribute_in_database) # Rails >= 5.1
123
+ record.attribute_in_database(:"#{property}")
124
+ else # Rails <= 5.0
125
+ record.send(value_was_method)
126
126
  end
127
127
  end
128
128
 
@@ -0,0 +1,29 @@
1
+ module AssignableValues
2
+ module ActiveRecord
3
+ module Restriction
4
+ class StoreAccessorAttribute < ScalarAttribute
5
+
6
+ private
7
+
8
+ def store_identifier
9
+ @model.stored_attributes.find { |_, attrs| attrs.include?(property.to_sym) }&.first
10
+ end
11
+
12
+ def value_was_method
13
+ :"#{store_identifier}_was"
14
+ end
15
+
16
+ def value_was(record)
17
+ accessor = if record.respond_to?(:attribute_in_database) # Rails >= 5.1
18
+ record.attribute_in_database(:"#{store_identifier}")
19
+ else # Rails <= 5.0
20
+ record.send(value_was_method)
21
+ end
22
+
23
+ accessor.with_indifferent_access[property]
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -4,7 +4,14 @@ module AssignableValues
4
4
  private
5
5
 
6
6
  def assignable_values_for(property, options = {}, &values)
7
- restriction_type = belongs_to_association?(property) ? Restriction::BelongsToAssociation : Restriction::ScalarAttribute
7
+ restriction_type = if belongs_to_association?(property)
8
+ Restriction::BelongsToAssociation
9
+ elsif store_accessor_attribute?(property)
10
+ Restriction::StoreAccessorAttribute
11
+ else
12
+ Restriction::ScalarAttribute
13
+ end
14
+
8
15
  restriction_type.new(self, property, options, &values)
9
16
  end
10
17
 
@@ -13,6 +20,14 @@ module AssignableValues
13
20
  reflection && reflection.macro == :belongs_to
14
21
  end
15
22
 
23
+ def store_accessor_attribute?(property)
24
+ store_identifier_of(property).present?
25
+ end
26
+
27
+ def store_identifier_of(property)
28
+ stored_attributes.find { |_, attrs| attrs.include?(property.to_sym) }&.first
29
+ end
30
+
16
31
  end
17
32
  end
18
33
 
@@ -1,3 +1,3 @@
1
1
  module AssignableValues
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -5,5 +5,6 @@ require 'assignable_values/active_record'
5
5
  require 'assignable_values/active_record/restriction/base'
6
6
  require 'assignable_values/active_record/restriction/belongs_to_association'
7
7
  require 'assignable_values/active_record/restriction/scalar_attribute'
8
+ require 'assignable_values/active_record/restriction/store_accessor_attribute'
8
9
  require 'assignable_values/humanized_value'
9
10
  require 'assignable_values/humanizable_string'
@@ -0,0 +1,169 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="101.85382mm"
14
+ height="14.056225mm"
15
+ viewBox="0 0 101.85382 14.056225"
16
+ version="1.1"
17
+ id="svg838"
18
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
19
+ sodipodi:docname="logo.dark.shapes.svg"
20
+ inkscape:export-filename="/home/henning/Projects/capybara-lockstep/media/capybara-lockstep.dark.png"
21
+ inkscape:export-xdpi="196"
22
+ inkscape:export-ydpi="196">
23
+ <defs
24
+ id="defs832">
25
+ <linearGradient
26
+ inkscape:collect="always"
27
+ id="linearGradient1406">
28
+ <stop
29
+ style="stop-color:#ff0844;stop-opacity:1"
30
+ offset="0"
31
+ id="stop1402" />
32
+ <stop
33
+ style="stop-color:#ffb199;stop-opacity:1"
34
+ offset="1"
35
+ id="stop1404" />
36
+ </linearGradient>
37
+ <linearGradient
38
+ inkscape:collect="always"
39
+ xlink:href="#linearGradient1406"
40
+ id="linearGradient1408"
41
+ x1="22.054907"
42
+ y1="91.071762"
43
+ x2="88.956696"
44
+ y2="91.071762"
45
+ gradientUnits="userSpaceOnUse"
46
+ gradientTransform="matrix(1.5174713,0,0,0.08820435,-33.467691,57.908781)" />
47
+ </defs>
48
+ <sodipodi:namedview
49
+ id="base"
50
+ pagecolor="#ffffff"
51
+ bordercolor="#666666"
52
+ borderopacity="1.0"
53
+ inkscape:pageopacity="0.0"
54
+ inkscape:pageshadow="2"
55
+ inkscape:zoom="5.6"
56
+ inkscape:cx="436.45379"
57
+ inkscape:cy="-41.725401"
58
+ inkscape:document-units="mm"
59
+ inkscape:current-layer="layer1"
60
+ showgrid="false"
61
+ fit-margin-top="0"
62
+ fit-margin-left="0"
63
+ fit-margin-right="0"
64
+ fit-margin-bottom="0"
65
+ inkscape:window-width="2560"
66
+ inkscape:window-height="1391"
67
+ inkscape:window-x="1920"
68
+ inkscape:window-y="0"
69
+ inkscape:window-maximized="1"
70
+ inkscape:pagecheckerboard="true" />
71
+ <metadata
72
+ id="metadata835">
73
+ <rdf:RDF>
74
+ <cc:Work
75
+ rdf:about="">
76
+ <dc:format>image/svg+xml</dc:format>
77
+ <dc:type
78
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
79
+ <dc:title></dc:title>
80
+ </cc:Work>
81
+ </rdf:RDF>
82
+ </metadata>
83
+ <g
84
+ inkscape:label="Layer 1"
85
+ inkscape:groupmode="layer"
86
+ id="layer1"
87
+ transform="translate(0.33337499,-52.518951)">
88
+ <g
89
+ aria-label="ASSIGNABLE_VALUES"
90
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
91
+ id="text1385">
92
+ <path
93
+ d="m 2.4288749,52.645951 h 1.571625 l 2.7569582,6.985 H 5.0694165 l -0.508,-1.402292 H 1.8732499 l -0.5132916,1.402292 h -1.69333329 z m -0.026458,4.196292 H 4.0375415 L 3.2279166,54.550951 h -0.015875 z"
94
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
95
+ id="path822" />
96
+ <path
97
+ d="m 9.8583639,52.518951 q 0.6508751,0 1.1377081,0.142875 0.486834,0.142875 0.783167,0.301625 0.296333,0.15875 0.359833,0.211667 l -0.762,1.275291 q -0.08467,-0.0635 -0.291041,-0.185208 -0.201084,-0.121708 -0.481542,-0.216958 -0.275167,-0.09525 -0.576792,-0.09525 -0.4074581,0 -0.661458,0.148166 -0.2487084,0.142875 -0.2487084,0.428625 0,0.195792 0.1322917,0.354542 0.1375833,0.153458 0.41275,0.296333 0.2804583,0.137584 0.7090837,0.301625 0.391583,0.142875 0.735541,0.338667 0.343959,0.195792 0.60325,0.465667 0.264584,0.264583 0.418042,0.613833 0.153458,0.34925 0.153458,0.79375 0,0.529167 -0.216958,0.92075 -0.216958,0.386292 -0.592667,0.640292 -0.370416,0.254 -0.846666,0.375708 -0.470959,0.127 -0.9789587,0.127 -0.7196667,0 -1.2911667,-0.164042 -0.5662083,-0.164041 -0.9154583,-0.354541 -0.3492499,-0.1905 -0.4180416,-0.254 L 7.810489,57.657159 q 0.0635,0.04762 0.2434167,0.153459 0.1852083,0.105833 0.4497916,0.22225 0.2645833,0.111125 0.5609167,0.1905 0.301625,0.07937 0.5926666,0.07937 0.4868334,0 0.7302504,-0.185209 0.243416,-0.1905 0.243416,-0.497416 0,-0.227542 -0.153458,-0.407459 Q 10.324031,57.032743 10.017114,56.873993 9.7101973,56.709951 9.2498223,56.530034 8.7894473,56.344826 8.3872806,56.080243 7.9904057,55.815659 7.7416973,55.418784 7.492989,55.021909 7.492989,54.434534 q 0,-0.587375 0.3280833,-1.016 0.333375,-0.433916 0.873125,-0.66675 0.5450417,-0.232833 1.1641666,-0.232833 z"
98
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
99
+ id="path824" />
100
+ <path
101
+ d="m 15.779735,52.518951 q 0.650875,0 1.137709,0.142875 0.486833,0.142875 0.783166,0.301625 0.296334,0.15875 0.359834,0.211667 l -0.762,1.275291 q -0.08467,-0.0635 -0.291042,-0.185208 -0.201083,-0.121708 -0.481542,-0.216958 -0.275166,-0.09525 -0.576791,-0.09525 -0.407459,0 -0.661459,0.148166 -0.248708,0.142875 -0.248708,0.428625 0,0.195792 0.132292,0.354542 0.137583,0.153458 0.41275,0.296333 0.280458,0.137584 0.709083,0.301625 0.391583,0.142875 0.735542,0.338667 0.343958,0.195792 0.60325,0.465667 0.264583,0.264583 0.418041,0.613833 0.153459,0.34925 0.153459,0.79375 0,0.529167 -0.216959,0.92075 -0.216958,0.386292 -0.592666,0.640292 -0.370417,0.254 -0.846667,0.375708 -0.470958,0.127 -0.978958,0.127 -0.719667,0 -1.291167,-0.164042 -0.566208,-0.164041 -0.915458,-0.354541 -0.34925,-0.1905 -0.418042,-0.254 l 0.788458,-1.328209 q 0.0635,0.04762 0.243417,0.153459 0.185208,0.105833 0.449792,0.22225 0.264583,0.111125 0.560916,0.1905 0.301625,0.07937 0.592667,0.07937 0.486833,0 0.73025,-0.185209 0.243417,-0.1905 0.243417,-0.497416 0,-0.227542 -0.153459,-0.407459 -0.153458,-0.179916 -0.460375,-0.338666 -0.306916,-0.164042 -0.767291,-0.343959 -0.460375,-0.185208 -0.862542,-0.449791 -0.396875,-0.264584 -0.645583,-0.661459 -0.248709,-0.396875 -0.248709,-0.98425 0,-0.587375 0.328084,-1.016 0.333375,-0.433916 0.873125,-0.66675 0.545041,-0.232833 1.164166,-0.232833 z"
102
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
103
+ id="path826" />
104
+ <path
105
+ d="m 19.214026,52.645951 h 1.582208 v 6.985 h -1.582208 z"
106
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
107
+ id="path828" />
108
+ <path
109
+ d="m 25.331172,55.725701 h 3.561292 v 0.4445 q 0,0.751417 -0.254,1.402292 -0.248708,0.650875 -0.714375,1.143 -0.465667,0.492125 -1.11125,0.767291 -0.645583,0.275167 -1.42875,0.275167 -0.809625,0 -1.471083,-0.275167 -0.656167,-0.280458 -1.132417,-0.777875 -0.47625,-0.497416 -0.73025,-1.153583 -0.254,-0.661458 -0.254,-1.418167 0,-0.751416 0.254,-1.407583 0.254,-0.661458 0.73025,-1.153583 0.47625,-0.497417 1.132417,-0.772584 0.661458,-0.280458 1.471083,-0.280458 0.661458,0 1.164167,0.142875 0.508,0.142875 0.873125,0.381 0.365125,0.238125 0.619125,0.523875 0.254,0.280458 0.423333,0.550333 l -1.502833,0.709084 q -0.216959,-0.333375 -0.592667,-0.582084 -0.370417,-0.248708 -0.98425,-0.248708 -0.428625,0 -0.788458,0.169333 -0.354542,0.169334 -0.613834,0.465667 -0.259291,0.291042 -0.402166,0.682625 -0.137584,0.386292 -0.137584,0.820208 0,0.439209 0.137584,0.8255 0.142875,0.386292 0.402166,0.682625 0.259292,0.296334 0.613834,0.465667 0.359833,0.164042 0.788458,0.164042 0.375708,0 0.682625,-0.09525 0.306917,-0.09525 0.529167,-0.275167 0.227541,-0.179917 0.354541,-0.423333 0.132292,-0.248709 0.15875,-0.545042 h -1.778 z"
110
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
111
+ id="path830" />
112
+ <path
113
+ d="m 31.263117,54.095868 0.116417,0.02117 v 5.513917 h -1.582209 v -6.985 h 2.159 l 2.831042,5.503333 -0.116417,0.02117 v -5.5245 h 1.582208 v 6.985 h -2.169583 z"
114
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
115
+ id="path832" />
116
+ <path
117
+ d="m 39.713905,52.645951 h 1.571625 l 2.756958,6.985 h -1.688041 l -0.508,-1.402292 H 39.15828 l -0.513291,1.402292 h -1.693334 z m -0.02646,4.196292 h 1.635125 l -0.809625,-2.291292 h -0.01587 z"
118
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
119
+ id="path834" />
120
+ <path
121
+ d="m 44.640434,52.645951 h 2.397125 q 0.597958,0 1.105958,0.164042 0.513292,0.164041 0.8255,0.53975 0.3175,0.370416 0.3175,1.005416 0,0.418042 -0.15875,0.746125 -0.153458,0.328084 -0.41275,0.53975 -0.254,0.206375 -0.555625,0.275167 0.264584,0.03175 0.513292,0.153458 0.254,0.116417 0.455083,0.328084 0.206375,0.206375 0.322792,0.518583 0.121708,0.306917 0.121708,0.73025 0,0.587375 -0.264583,1.037167 -0.259292,0.4445 -0.762,0.6985 -0.497417,0.248708 -1.222375,0.248708 h -2.682875 z m 1.582208,5.720292 h 0.719667 q 0.338667,0 0.550333,-0.100542 0.216959,-0.105833 0.3175,-0.296333 0.100542,-0.195792 0.100542,-0.465667 0,-0.423333 -0.264583,-0.619125 -0.259292,-0.201083 -0.73025,-0.201083 h -0.693209 z m 0,-2.921 h 0.640292 q 0.280458,0 0.465667,-0.100542 0.1905,-0.100542 0.28575,-0.280458 0.100541,-0.185209 0.100541,-0.423334 0,-0.428625 -0.243416,-0.576791 -0.243417,-0.153459 -0.66675,-0.153459 h -0.582084 z"
122
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
123
+ id="path836" />
124
+ <path
125
+ d="m 50.556499,52.645951 h 1.582209 v 5.598583 h 2.534708 v 1.386417 h -4.116917 z"
126
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
127
+ id="path838" />
128
+ <path
129
+ d="m 55.699995,52.645951 h 4.460875 v 1.386417 h -2.883958 v 1.423458 h 2.8575 v 1.344083 h -2.8575 v 1.444625 h 2.883958 v 1.386417 h -4.460875 z"
130
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
131
+ id="path840" />
132
+ <path
133
+ d="m 60.970476,60.668118 v -0.904875 h 4.323292 v 0.904875 z"
134
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
135
+ id="path842" />
136
+ <path
137
+ d="M 69.696424,59.630951 H 67.90784 l -2.487083,-6.985 h 1.783292 l 1.598083,4.968875 1.598083,-4.968875 h 1.783292 z"
138
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
139
+ id="path844" />
140
+ <path
141
+ d="m 74.278995,52.645951 h 1.571625 l 2.756959,6.985 h -1.688042 l -0.508,-1.402292 H 73.72337 l -0.513291,1.402292 h -1.693333 z m -0.02646,4.196292 h 1.635125 l -0.809625,-2.291292 h -0.01587 z"
142
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
143
+ id="path846" />
144
+ <path
145
+ d="m 79.205528,52.645951 h 1.582208 v 5.598583 h 2.534709 v 1.386417 h -4.116917 z"
146
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
147
+ id="path848" />
148
+ <path
149
+ d="m 88.196052,52.645951 h 1.582208 v 4.291542 q 0,0.862541 -0.338666,1.497541 -0.338667,0.629709 -0.968375,0.978959 -0.629709,0.343958 -1.502834,0.343958 -0.878416,0 -1.513416,-0.343958 -0.635,-0.34925 -0.973667,-0.978959 -0.333375,-0.635 -0.333375,-1.497541 v -4.291542 h 1.576917 v 4.206875 q 0,0.47625 0.148166,0.804333 0.153459,0.328084 0.433917,0.497417 0.280458,0.164042 0.661458,0.164042 0.375709,0 0.650875,-0.164042 0.275167,-0.169333 0.423334,-0.497417 0.153458,-0.328083 0.153458,-0.804333 z"
150
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
151
+ id="path850" />
152
+ <path
153
+ d="m 90.894793,52.645951 h 4.460875 v 1.386417 h -2.883959 v 1.423458 h 2.8575 v 1.344083 h -2.8575 v 1.444625 h 2.883959 v 1.386417 h -4.460875 z"
154
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
155
+ id="path852" />
156
+ <path
157
+ d="m 99.096861,52.518951 q 0.650875,0 1.137709,0.142875 0.48683,0.142875 0.78317,0.301625 0.29633,0.15875 0.35983,0.211667 l -0.762,1.275291 q -0.0847,-0.0635 -0.29104,-0.185208 -0.20109,-0.121708 -0.481544,-0.216958 -0.275167,-0.09525 -0.576792,-0.09525 -0.407458,0 -0.661458,0.148166 -0.248709,0.142875 -0.248709,0.428625 0,0.195792 0.132292,0.354542 0.137583,0.153458 0.41275,0.296333 0.280458,0.137584 0.709083,0.301625 0.391588,0.142875 0.735538,0.338667 0.34396,0.195792 0.60325,0.465667 0.26459,0.264583 0.41805,0.613833 0.15345,0.34925 0.15345,0.79375 0,0.529167 -0.21695,0.92075 -0.21696,0.386292 -0.59267,0.640292 -0.37042,0.254 -0.846668,0.375708 -0.470958,0.127 -0.978958,0.127 -0.719667,0 -1.291167,-0.164042 -0.566208,-0.164041 -0.915458,-0.354541 -0.34925,-0.1905 -0.418042,-0.254 l 0.788459,-1.328209 q 0.0635,0.04762 0.243416,0.153459 0.185209,0.105833 0.449792,0.22225 0.264583,0.111125 0.560917,0.1905 0.301625,0.07937 0.592666,0.07937 0.486834,0 0.73025,-0.185209 0.243417,-0.1905 0.243417,-0.497416 0,-0.227542 -0.153458,-0.407459 -0.153459,-0.179916 -0.460375,-0.338666 -0.306917,-0.164042 -0.767292,-0.343959 -0.460375,-0.185208 -0.862542,-0.449791 -0.396875,-0.264584 -0.645583,-0.661459 -0.248708,-0.396875 -0.248708,-0.98425 0,-0.587375 0.328083,-1.016 0.333375,-0.433916 0.873125,-0.66675 0.545042,-0.232833 1.164167,-0.232833 z"
158
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
159
+ id="path854" />
160
+ </g>
161
+ <rect
162
+ style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.03658517;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
163
+ id="rect1387"
164
+ width="101.52154"
165
+ height="1.2668874"
166
+ x="-3.5678506e-15"
167
+ y="65.308289" />
168
+ </g>
169
+ </svg>
@@ -0,0 +1,107 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="101.85382mm"
14
+ height="14.056225mm"
15
+ viewBox="0 0 101.85382 14.056225"
16
+ version="1.1"
17
+ id="svg838"
18
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
19
+ sodipodi:docname="logo.dark.text.svg"
20
+ inkscape:export-filename="/home/henning/Projects/capybara-lockstep/media/capybara-lockstep.dark.png"
21
+ inkscape:export-xdpi="196"
22
+ inkscape:export-ydpi="196">
23
+ <defs
24
+ id="defs832">
25
+ <linearGradient
26
+ inkscape:collect="always"
27
+ id="linearGradient1406">
28
+ <stop
29
+ style="stop-color:#ff0844;stop-opacity:1"
30
+ offset="0"
31
+ id="stop1402" />
32
+ <stop
33
+ style="stop-color:#ffb199;stop-opacity:1"
34
+ offset="1"
35
+ id="stop1404" />
36
+ </linearGradient>
37
+ <linearGradient
38
+ inkscape:collect="always"
39
+ xlink:href="#linearGradient1406"
40
+ id="linearGradient1408"
41
+ x1="22.054907"
42
+ y1="91.071762"
43
+ x2="88.956696"
44
+ y2="91.071762"
45
+ gradientUnits="userSpaceOnUse"
46
+ gradientTransform="matrix(1.5174713,0,0,0.08820435,-33.467691,57.908781)" />
47
+ </defs>
48
+ <sodipodi:namedview
49
+ id="base"
50
+ pagecolor="#ffffff"
51
+ bordercolor="#666666"
52
+ borderopacity="1.0"
53
+ inkscape:pageopacity="0.0"
54
+ inkscape:pageshadow="2"
55
+ inkscape:zoom="5.6"
56
+ inkscape:cx="436.45379"
57
+ inkscape:cy="-41.725401"
58
+ inkscape:document-units="mm"
59
+ inkscape:current-layer="layer1"
60
+ showgrid="false"
61
+ fit-margin-top="0"
62
+ fit-margin-left="0"
63
+ fit-margin-right="0"
64
+ fit-margin-bottom="0"
65
+ inkscape:window-width="2560"
66
+ inkscape:window-height="1391"
67
+ inkscape:window-x="1920"
68
+ inkscape:window-y="0"
69
+ inkscape:window-maximized="1"
70
+ inkscape:pagecheckerboard="true" />
71
+ <metadata
72
+ id="metadata835">
73
+ <rdf:RDF>
74
+ <cc:Work
75
+ rdf:about="">
76
+ <dc:format>image/svg+xml</dc:format>
77
+ <dc:type
78
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
79
+ <dc:title></dc:title>
80
+ </cc:Work>
81
+ </rdf:RDF>
82
+ </metadata>
83
+ <g
84
+ inkscape:label="Layer 1"
85
+ inkscape:groupmode="layer"
86
+ id="layer1"
87
+ transform="translate(0.33337499,-52.518951)">
88
+ <text
89
+ xml:space="preserve"
90
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
91
+ x="-0.27516666"
92
+ y="59.630951"
93
+ id="text1385"><tspan
94
+ sodipodi:role="line"
95
+ id="tspan1383"
96
+ x="-0.27516666"
97
+ y="59.630951"
98
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332">ASSIGNABLE_VALUES</tspan></text>
99
+ <rect
100
+ style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.03658517;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
101
+ id="rect1387"
102
+ width="101.52154"
103
+ height="1.2668874"
104
+ x="-3.5678506e-15"
105
+ y="65.308289" />
106
+ </g>
107
+ </svg>