assignable_values 1.0.1 → 1.1.0

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