compony 0.2.0 → 0.2.2
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 +4 -4
- data/CHANGELOG.md +25 -0
- data/Gemfile.lock +3 -3
- data/README.md +1397 -33
- data/Rakefile +6 -2
- data/TODO.md +1 -0
- data/VERSION +1 -0
- data/app/controllers/compony_controller.rb +3 -1
- data/compony.gemspec +7 -7
- data/config/locales/fr.yml +33 -0
- data/doc/ComponentGenerator.html +231 -0
- data/doc/Components.html +105 -0
- data/doc/ComponentsGenerator.html +203 -0
- data/doc/Compony/Component.html +2098 -0
- data/doc/Compony/ComponentMixins/Default/Labelling.html +406 -0
- data/doc/Compony/ComponentMixins/Default/Standalone/ResourcefulVerbDsl.html +539 -0
- data/doc/Compony/ComponentMixins/Default/Standalone/StandaloneDsl.html +588 -0
- data/doc/Compony/ComponentMixins/Default/Standalone/VerbDsl.html +577 -0
- data/doc/Compony/ComponentMixins/Default/Standalone.html +692 -0
- data/doc/Compony/ComponentMixins/Default.html +126 -0
- data/doc/Compony/ComponentMixins/Resourceful.html +1193 -0
- data/doc/Compony/ComponentMixins.html +126 -0
- data/doc/Compony/Components/Button.html +293 -0
- data/doc/Compony/Components/Destroy.html +384 -0
- data/doc/Compony/Components/Edit.html +462 -0
- data/doc/Compony/Components/Form.html +1112 -0
- data/doc/Compony/Components/New.html +462 -0
- data/doc/Compony/Components/WithForm.html +528 -0
- data/doc/Compony/Components.html +126 -0
- data/doc/Compony/ControllerMixin.html +136 -0
- data/doc/Compony/Engine.html +133 -0
- data/doc/Compony/MethodAccessibleHash.html +453 -0
- data/doc/Compony/ModelFields/Anchormodel.html +383 -0
- data/doc/Compony/ModelFields/Association.html +613 -0
- data/doc/Compony/ModelFields/Attachment.html +305 -0
- data/doc/Compony/ModelFields/Base.html +1066 -0
- data/doc/Compony/ModelFields/Boolean.html +232 -0
- data/doc/Compony/ModelFields/Color.html +299 -0
- data/doc/Compony/ModelFields/Currency.html +232 -0
- data/doc/Compony/ModelFields/Date.html +232 -0
- data/doc/Compony/ModelFields/Datetime.html +232 -0
- data/doc/Compony/ModelFields/Decimal.html +154 -0
- data/doc/Compony/ModelFields/Email.html +240 -0
- data/doc/Compony/ModelFields/Float.html +154 -0
- data/doc/Compony/ModelFields/Integer.html +154 -0
- data/doc/Compony/ModelFields/Percentage.html +232 -0
- data/doc/Compony/ModelFields/Phone.html +301 -0
- data/doc/Compony/ModelFields/RichText.html +232 -0
- data/doc/Compony/ModelFields/String.html +154 -0
- data/doc/Compony/ModelFields/Text.html +154 -0
- data/doc/Compony/ModelFields/Time.html +154 -0
- data/doc/Compony/ModelFields/Url.html +240 -0
- data/doc/Compony/ModelFields.html +126 -0
- data/doc/Compony/ModelMixin.html +524 -0
- data/doc/Compony/RequestContext.html +791 -0
- data/doc/Compony/Version.html +139 -0
- data/doc/Compony/ViewHelpers.html +443 -0
- data/doc/Compony.html +2156 -0
- data/doc/ComponyController.html +124 -0
- data/doc/_index.html +569 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +497 -0
- data/doc/file.README.html +1565 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/imgs/intro-example-destroy.png +0 -0
- data/doc/imgs/intro-example-edit.png +0 -0
- data/doc/imgs/intro-example-index.png +0 -0
- data/doc/imgs/intro-example-new.png +0 -0
- data/doc/imgs/intro-example-show.png +0 -0
- data/doc/index.html +1565 -0
- data/doc/js/app.js +314 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +1435 -0
- data/doc/resourceful_lifecycle.png +0 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/compony/component.rb +2 -1
- data/lib/compony/component_mixins/default/standalone/resourceful_verb_dsl.rb +1 -1
- data/lib/compony/component_mixins/default/standalone/standalone_dsl.rb +14 -3
- data/lib/compony/component_mixins/default/standalone/verb_dsl.rb +14 -5
- data/lib/compony/component_mixins/default/standalone.rb +10 -3
- data/lib/compony/components/form.rb +6 -1
- data/lib/compony/components/with_form.rb +14 -1
- data/lib/compony/model_fields/anchormodel.rb +0 -22
- data/lib/compony/model_mixin.rb +12 -2
- data/lib/compony/version.rb +1 -7
- data/logo.svg +133 -0
- metadata +83 -6
|
Binary file
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>
|
|
7
|
+
Top Level Namespace
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.9.34
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript">
|
|
18
|
+
pathId = "";
|
|
19
|
+
relpath = '';
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
24
|
+
|
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="nav_wrap">
|
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
|
32
|
+
<div id="resizer"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="main" tabindex="-1">
|
|
36
|
+
<div id="header">
|
|
37
|
+
<div id="menu">
|
|
38
|
+
|
|
39
|
+
<a href="_index.html">Index</a> »
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
<span class="title">Top Level Namespace</span>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div id="search">
|
|
47
|
+
|
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
|
49
|
+
href="class_list.html">
|
|
50
|
+
|
|
51
|
+
<svg width="24" height="24">
|
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
|
55
|
+
</svg>
|
|
56
|
+
</a>
|
|
57
|
+
|
|
58
|
+
</div>
|
|
59
|
+
<div class="clear"></div>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div id="content"><h1>Top Level Namespace
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
</h1>
|
|
67
|
+
<div class="box_info">
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<h2>Defined Under Namespace</h2>
|
|
82
|
+
<p class="children">
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Components.html" title="Components (module)">Components</a></span>, <span class='object_link'><a href="Compony.html" title="Compony (module)">Compony</a></span>
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="ComponentGenerator.html" title="ComponentGenerator (class)">ComponentGenerator</a></span>, <span class='object_link'><a href="ComponentsGenerator.html" title="ComponentsGenerator (class)">ComponentsGenerator</a></span>, <span class='object_link'><a href="ComponyController.html" title="ComponyController (class)">ComponyController</a></span>
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
</p>
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div id="footer">
|
|
105
|
+
Generated on Wed Apr 24 17:14:05 2024 by
|
|
106
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
107
|
+
0.9.34 (ruby-3.2.2).
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
</div>
|
|
111
|
+
</body>
|
|
112
|
+
</html>
|
data/lib/compony/component.rb
CHANGED
|
@@ -145,10 +145,11 @@ module Compony
|
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
# Renders the component using the controller passsed to it and returns it as a string.
|
|
148
|
-
# @param standalone
|
|
148
|
+
# @param [Boolean] standalone pass true iff `render` is called from `render_standalone`
|
|
149
149
|
# Do not overwrite.
|
|
150
150
|
def render(controller, standalone: false, **locals)
|
|
151
151
|
# Call before_render hook if any and backfire instance variables back to the component
|
|
152
|
+
# TODO: Can .request_context be removed from the next line? Test well!
|
|
152
153
|
RequestContext.new(self, controller, locals:).request_context.evaluate_with_backfire(&@before_render_block) if @before_render_block
|
|
153
154
|
# Render, unless before_render has already issued a body (e.g. through redirecting).
|
|
154
155
|
if controller.response_body.nil?
|
|
@@ -14,7 +14,7 @@ module Compony
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
# For internal usage only, processes the block and returns a config hash.
|
|
17
|
-
def to_conf(&)
|
|
17
|
+
def to_conf(provide_defaults:, &)
|
|
18
18
|
return super.deep_merge({
|
|
19
19
|
load_data_block: @load_data_block,
|
|
20
20
|
assign_attributes_block: @assign_attributes_block,
|
|
@@ -4,11 +4,13 @@ module Compony
|
|
|
4
4
|
module Standalone
|
|
5
5
|
# @api description
|
|
6
6
|
# Wrapper and DSL helper for component's standalone config
|
|
7
|
+
# Pass `provide_defaults` true if this is the first standalone DSL of a component. Pass false if it is a subsequent one (e.g. if subclassed comp)
|
|
7
8
|
class StandaloneDsl < Dslblend::Base
|
|
8
|
-
def initialize(component, name = nil, path: nil)
|
|
9
|
+
def initialize(component, name = nil, provide_defaults:, path: nil)
|
|
9
10
|
super()
|
|
10
11
|
@component = component
|
|
11
12
|
@name = name&.to_sym
|
|
13
|
+
@provide_defaults = provide_defaults
|
|
12
14
|
@path = path
|
|
13
15
|
@verbs = {}
|
|
14
16
|
@skip_authentication = false
|
|
@@ -38,8 +40,17 @@ module Compony
|
|
|
38
40
|
def verb(verb, *args, **nargs, &)
|
|
39
41
|
verb = verb.to_sym
|
|
40
42
|
verb_dsl_class = @component.resourceful? ? ResourcefulVerbDsl : VerbDsl
|
|
41
|
-
@verbs[verb]
|
|
42
|
-
|
|
43
|
+
if @verbs[verb]
|
|
44
|
+
@verbs[verb].deep_merge! verb_dsl_class.new(@component, verb, *args, **nargs).to_conf(provide_defaults: false, &)
|
|
45
|
+
else
|
|
46
|
+
# Note about provide_defaults:
|
|
47
|
+
# - We must pass false if this is the second time `standalone` was called for this component -> see @provide_defaults
|
|
48
|
+
# - We musst pass false if this is the second time `verb` was called for this component -> handled by the if statement (other branch)
|
|
49
|
+
# - We must pass true otherwise (handled by this branch)
|
|
50
|
+
@verbs[verb] = Compony::MethodAccessibleHash.new(
|
|
51
|
+
verb_dsl_class.new(@component, verb, *args, **nargs).to_conf(provide_defaults: @provide_defaults, &)
|
|
52
|
+
)
|
|
53
|
+
end
|
|
43
54
|
end
|
|
44
55
|
|
|
45
56
|
# DSL
|
|
@@ -17,18 +17,19 @@ module Compony
|
|
|
17
17
|
|
|
18
18
|
@component = component
|
|
19
19
|
@verb = verb
|
|
20
|
-
@respond_blocks = {
|
|
20
|
+
@respond_blocks = {}
|
|
21
21
|
@authorize_block = nil
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
# For internal usage only, processes the block and returns a config hash.
|
|
25
|
-
def to_conf(&)
|
|
25
|
+
def to_conf(provide_defaults:, &)
|
|
26
26
|
evaluate(&) if block_given?
|
|
27
|
-
|
|
27
|
+
base_config = provide_defaults ? default_config : {}
|
|
28
|
+
return base_config.deep_merge({
|
|
28
29
|
verb: @verb,
|
|
29
|
-
authorize_block: @authorize_block
|
|
30
|
+
authorize_block: @authorize_block,
|
|
30
31
|
respond_blocks: @respond_blocks
|
|
31
|
-
}.compact
|
|
32
|
+
}.compact)
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
protected
|
|
@@ -45,6 +46,14 @@ module Compony
|
|
|
45
46
|
def respond(format = nil, &block)
|
|
46
47
|
@respond_blocks[format&.to_sym] = block
|
|
47
48
|
end
|
|
49
|
+
|
|
50
|
+
# Internal, do not use
|
|
51
|
+
def default_config
|
|
52
|
+
return {
|
|
53
|
+
authorize_block: proc { can?(comp_name.to_sym, family_name.to_sym) },
|
|
54
|
+
respond_blocks: { nil => proc { render_standalone(controller) } }
|
|
55
|
+
}
|
|
56
|
+
end
|
|
48
57
|
end
|
|
49
58
|
end
|
|
50
59
|
end
|
|
@@ -57,7 +57,7 @@ module Compony
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
# TODO: Make much prettier, providing message, action, subject and conditions
|
|
60
|
-
fail CanCan::AccessDenied, inspect unless request_context.evaluate(&verb_config.authorize_block)
|
|
60
|
+
fail CanCan::AccessDenied, [inspect, verb_config.authorize_block.inspect].join(', ') unless request_context.evaluate(&verb_config.authorize_block)
|
|
61
61
|
|
|
62
62
|
if verb_config.store_data_block
|
|
63
63
|
request_context.evaluate_with_backfire(&verb_config.store_data_block)
|
|
@@ -104,11 +104,18 @@ module Compony
|
|
|
104
104
|
protected
|
|
105
105
|
|
|
106
106
|
# DSL method
|
|
107
|
+
# This can be called multiple times to make a component listen to multiple paths. Each standalone config (path) has a name, the default being `nil`.
|
|
108
|
+
# To have a component listen to multiple paths, call standalone again and provide a name, e.g.: standalone(:autocomplete, path: 'foo/bar/autocomplete')
|
|
109
|
+
# The kwarg parameter `path` is handled analog to the Rails route path
|
|
110
|
+
# @param name [Symbol,nil] The name of the standalone config, defaults to nil. Only provide if you add additional configs.
|
|
107
111
|
def standalone(name = nil, *args, **nargs, &block)
|
|
108
112
|
block = proc {} unless block_given? # If called without a block, must default to an empty block to provide a binding to the DSL.
|
|
109
113
|
name = name&.to_sym # nil name is the most common case
|
|
110
|
-
@standalone_configs[name]
|
|
111
|
-
|
|
114
|
+
if @standalone_configs[name]
|
|
115
|
+
@standalone_configs[name].deep_merge! StandaloneDsl.new(self, name, *args, provide_defaults: false, **nargs).to_conf(&block)
|
|
116
|
+
else
|
|
117
|
+
@standalone_configs[name] = Compony::MethodAccessibleHash.new(StandaloneDsl.new(self, name, *args, provide_defaults: true, **nargs).to_conf(&block))
|
|
118
|
+
end
|
|
112
119
|
end
|
|
113
120
|
|
|
114
121
|
# Undoes previous standalone calls
|
|
@@ -86,7 +86,7 @@ module Compony
|
|
|
86
86
|
if hidden
|
|
87
87
|
return model_field.simpleform_input_hidden(@simpleform, self, **input_opts)
|
|
88
88
|
else
|
|
89
|
-
unless @focus_given
|
|
89
|
+
unless @focus_given || @skip_autofocus
|
|
90
90
|
input_opts[:autofocus] = true unless input_opts.key? :autofocus
|
|
91
91
|
@focus_given = true
|
|
92
92
|
end
|
|
@@ -136,6 +136,11 @@ module Compony
|
|
|
136
136
|
fail 'schema requires a block to be given'
|
|
137
137
|
end
|
|
138
138
|
end
|
|
139
|
+
|
|
140
|
+
# DSL method, skips adding autofocus to the first field
|
|
141
|
+
def skip_autofocus
|
|
142
|
+
@skip_autofocus = true
|
|
143
|
+
end
|
|
139
144
|
end
|
|
140
145
|
end
|
|
141
146
|
end
|
|
@@ -4,6 +4,12 @@ module Compony
|
|
|
4
4
|
# This component is destined to take a sub-component that is a form component.
|
|
5
5
|
# It can be called via :get or via `submit_verb` depending on whether its form should be shown or submitted.
|
|
6
6
|
class WithForm < Component
|
|
7
|
+
def initialize(...)
|
|
8
|
+
# TODO: On the next line, use Compony.path instead? Likely, this was implemented before that method existed.
|
|
9
|
+
@submit_path_block = ->(controller) { controller.helpers.send("#{Compony.path_helper_name(comp_name, family_name)}_path") }
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
|
|
7
13
|
# Returns an instance of the form component responsible for rendering the form.
|
|
8
14
|
# Feel free to override this in subclasses.
|
|
9
15
|
def form_comp
|
|
@@ -11,7 +17,7 @@ module Compony
|
|
|
11
17
|
self,
|
|
12
18
|
submit_verb:,
|
|
13
19
|
# If applicable, Rails adds the route keys automatically, thus, e.g. :id does not need to be passed here, as it comes from the request.
|
|
14
|
-
submit_path:
|
|
20
|
+
submit_path: @submit_path_block
|
|
15
21
|
)
|
|
16
22
|
end
|
|
17
23
|
|
|
@@ -32,6 +38,13 @@ module Compony
|
|
|
32
38
|
def form_comp_class(new_form_comp_class = nil)
|
|
33
39
|
@form_comp_class ||= new_form_comp_class
|
|
34
40
|
end
|
|
41
|
+
|
|
42
|
+
# DSL method
|
|
43
|
+
# Overrides the submit path which would otherwise default to this component
|
|
44
|
+
# This takes a block that will be called and given a controller
|
|
45
|
+
def submit_path(&new_submit_path_block)
|
|
46
|
+
@submit_path_block = new_submit_path_block
|
|
47
|
+
end
|
|
35
48
|
end
|
|
36
49
|
end
|
|
37
50
|
end
|
|
@@ -10,28 +10,6 @@ module Compony
|
|
|
10
10
|
return transform_and_join(data.send(@name), controller:) { |el| el&.label }
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def simpleform_input(form, _component, name: nil, **input_opts)
|
|
14
|
-
anchormodel_attribute = @model_class.anchormodel_attributes[@name]
|
|
15
|
-
anchormodel_class = anchormodel_attribute.anchormodel_class
|
|
16
|
-
input_opts[:input_html] ||= {}
|
|
17
|
-
# Attempt to read selected key from html input options "value", as the caller might not know that this is a select.
|
|
18
|
-
selected_key = input_opts[:input_html].delete(:value) # can also be both nil or blank
|
|
19
|
-
if selected_key.blank? && form.object
|
|
20
|
-
# No selected key override present and a model is present, use the model to find out what to select
|
|
21
|
-
selected_cst = form.object.send(@name)
|
|
22
|
-
selected_key = selected_cst&.key || anchormodel_class.all.first
|
|
23
|
-
end
|
|
24
|
-
opts = {
|
|
25
|
-
collection: self.class.collect(anchormodel_class.all),
|
|
26
|
-
label_method: :first,
|
|
27
|
-
value_method: :second,
|
|
28
|
-
selected: selected_key, # if used in select
|
|
29
|
-
checked: selected_key, # if used in radio buttons
|
|
30
|
-
include_blank: anchormodel_attribute.optional
|
|
31
|
-
}.merge(input_opts)
|
|
32
|
-
return form.input name || @name, **opts
|
|
33
|
-
end
|
|
34
|
-
|
|
35
13
|
def simpleform_input_hidden(form, _component, name: nil, **input_opts)
|
|
36
14
|
if form.object
|
|
37
15
|
selected_cst = form.object.send(@name)
|
data/lib/compony/model_mixin.rb
CHANGED
|
@@ -19,7 +19,6 @@ module Compony
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
# DSL method, defines a new field which will be translated and can be added to field groups
|
|
22
|
-
# For virtual attributes, you must pass a type explicitely, otherwise it's auto-infered.
|
|
23
22
|
def field(name, type, **extra_attrs)
|
|
24
23
|
name = name.to_sym
|
|
25
24
|
self.fields = fields.dup
|
|
@@ -63,8 +62,12 @@ module Compony
|
|
|
63
62
|
end
|
|
64
63
|
end
|
|
65
64
|
|
|
66
|
-
# Retrieves feasibility for the given instance
|
|
65
|
+
# Retrieves feasibility for the given instance, returning a boolean indicating whether the action is feasibly.
|
|
67
66
|
# Calling this with an invalid action name will always return true.
|
|
67
|
+
# This also generates appropriate error messages for any reason causing it to return false.
|
|
68
|
+
# Feasilbility is cached, thus the second access will be faster.
|
|
69
|
+
# @param action_name [Symbol,String] the action that the feasibility should be checked for, e.g. :destroy
|
|
70
|
+
# @param recompute [Boolean] whether feasibility should be forcably recomputed even if a cached result is present
|
|
68
71
|
def feasible?(action_name, recompute: false)
|
|
69
72
|
action_name = action_name.to_sym
|
|
70
73
|
@feasibility_messages ||= {}
|
|
@@ -83,12 +86,19 @@ module Compony
|
|
|
83
86
|
return @feasibility_messages[action_name].none?
|
|
84
87
|
end
|
|
85
88
|
|
|
89
|
+
# Retrieves feasibility for the given instance and returns an array of reasons preventing the feasibility. Returns an empty array if feasible.
|
|
90
|
+
# Conceptually, this is comparable to a model's `errors`.
|
|
91
|
+
# @param action_name [Symbol,String] the action that the feasibility should be checked for, e.g. :destroy
|
|
86
92
|
def feasibility_messages(action_name)
|
|
87
93
|
action_name = action_name.to_sym
|
|
88
94
|
feasible?(action_name) if @feasibility_messages&.[](action_name).nil? # If feasibility check hasn't been performed yet for this action, perform it now
|
|
89
95
|
return @feasibility_messages[action_name]
|
|
90
96
|
end
|
|
91
97
|
|
|
98
|
+
# Retrieves feasibility for the given instance and returns a string holding all reasons preventing the feasibility. Returns an empty string if feasible.
|
|
99
|
+
# Messages are joined using commata. The first character is capitalized and a period is added to the end.
|
|
100
|
+
# Conceptually, this is comparable to a model's `full_messages`.
|
|
101
|
+
# @param action_name [Symbol,String] the action that the feasibility should be checked for, e.g. :destroy
|
|
92
102
|
def full_feasibility_messages(action_name)
|
|
93
103
|
text = feasibility_messages(action_name).join(', ').upcase_first
|
|
94
104
|
text += '.' if text.present?
|
data/lib/compony/version.rb
CHANGED
data/logo.svg
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
width="200mm"
|
|
6
|
+
height="200mm"
|
|
7
|
+
viewBox="0 0 200 200"
|
|
8
|
+
version="1.1"
|
|
9
|
+
id="svg5"
|
|
10
|
+
xml:space="preserve"
|
|
11
|
+
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
|
12
|
+
sodipodi:docname="logo.svg"
|
|
13
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
14
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
15
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
16
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
17
|
+
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
|
18
|
+
id="namedview7"
|
|
19
|
+
pagecolor="#ffffff"
|
|
20
|
+
bordercolor="#666666"
|
|
21
|
+
borderopacity="1.0"
|
|
22
|
+
inkscape:showpageshadow="2"
|
|
23
|
+
inkscape:pageopacity="0.0"
|
|
24
|
+
inkscape:pagecheckerboard="0"
|
|
25
|
+
inkscape:deskcolor="#d1d1d1"
|
|
26
|
+
inkscape:document-units="mm"
|
|
27
|
+
showgrid="false"
|
|
28
|
+
inkscape:zoom="0.77887092"
|
|
29
|
+
inkscape:cx="341.52"
|
|
30
|
+
inkscape:cy="303.00271"
|
|
31
|
+
inkscape:window-width="1532"
|
|
32
|
+
inkscape:window-height="1036"
|
|
33
|
+
inkscape:window-x="384"
|
|
34
|
+
inkscape:window-y="0"
|
|
35
|
+
inkscape:window-maximized="1"
|
|
36
|
+
inkscape:current-layer="layer2" /><defs
|
|
37
|
+
id="defs2"><linearGradient
|
|
38
|
+
inkscape:collect="always"
|
|
39
|
+
id="linearGradient4245"><stop
|
|
40
|
+
style="stop-color:#6b006b;stop-opacity:1;"
|
|
41
|
+
offset="0.50034827"
|
|
42
|
+
id="stop4241" /><stop
|
|
43
|
+
style="stop-color:#501a50;stop-opacity:1;"
|
|
44
|
+
offset="0.9272868"
|
|
45
|
+
id="stop4243" /></linearGradient><linearGradient
|
|
46
|
+
inkscape:collect="always"
|
|
47
|
+
xlink:href="#linearGradient4245"
|
|
48
|
+
id="linearGradient4239"
|
|
49
|
+
x1="43.394249"
|
|
50
|
+
y1="190.80437"
|
|
51
|
+
x2="186.19225"
|
|
52
|
+
y2="49.854321"
|
|
53
|
+
gradientUnits="userSpaceOnUse"
|
|
54
|
+
gradientTransform="matrix(0.88763912,0,0,0.88763912,6.9268356,-23.034281)" /><inkscape:path-effect
|
|
55
|
+
effect="fill_between_many"
|
|
56
|
+
method="originald"
|
|
57
|
+
linkedpaths="#path2775-1-75,0,1|"
|
|
58
|
+
id="path-effect996" /></defs><g
|
|
59
|
+
inkscape:label="Ebene 1"
|
|
60
|
+
inkscape:groupmode="layer"
|
|
61
|
+
id="layer1"
|
|
62
|
+
style="display:none"
|
|
63
|
+
sodipodi:insensitive="true"><rect
|
|
64
|
+
style="fill:#ff0000;stroke:none;stroke-width:2.565;stroke-linejoin:bevel;-inkscape-stroke:none;stop-color:#000000"
|
|
65
|
+
id="rect1777"
|
|
66
|
+
width="181.25208"
|
|
67
|
+
height="181.25208"
|
|
68
|
+
x="14.784949"
|
|
69
|
+
y="33.804947"
|
|
70
|
+
ry="0" /><path
|
|
71
|
+
style="fill:#000000;stroke-width:0.485896"
|
|
72
|
+
d="m 78.084821,195.93085 c -0.104403,-0.20043 -0.237069,-1.23735 -0.294779,-2.30427 -0.128644,-2.37863 -0.971964,-4.13145 -3.245489,-6.7458 -5.589327,-6.42721 -8.47464,-10.14797 -8.47464,-10.92856 0,-0.48713 0.862603,-2.22033 1.91689,-3.85151 1.054301,-1.63121 2.049224,-3.68765 2.210938,-4.56988 0.283402,-1.54604 0.196492,-1.65454 -2.402816,-2.99985 -3.105605,-1.60735 -7.822289,-6.41042 -9.256406,-9.42592 -0.982266,-2.06542 -1.414091,-2.42536 -1.922606,-1.60256 -0.436425,0.70615 -1.543781,17.31002 -1.453317,21.79124 0.04463,2.21217 -0.106744,4.13829 -0.336499,4.28028 -0.575619,0.35574 -0.520373,4.91349 0.08608,7.09681 0.672282,2.42053 4.41404,5.73727 6.47248,5.73727 0.82197,0 2.376426,0.31282 3.454335,0.69514 1.077908,0.38234 2.61578,0.83845 3.417504,1.01359 l 1.457698,0.31844 -1.42949,0.75144 c -1.20326,0.63252 -2.779602,0.70232 -9.960862,0.44112 -9.093769,-0.33077 -14.205225,-1.35281 -14.515703,-2.90243 -0.113122,-0.5646 -0.707313,-0.75532 -2.256375,-0.72424 -2.433032,0.0489 -3.085222,-0.2579 -3.637676,-1.71097 -0.584508,-1.53738 1.70076,-15.52576 4.099302,-25.09226 0.636537,-2.53881 1.291735,-5.63923 1.455995,-6.88983 0.164261,-1.25058 0.746177,-2.84274 1.293149,-3.53809 0.948699,-1.20608 4.715185,-3.94972 7.812912,-5.69121 1.907965,-1.07262 2.644995,-2.19499 4.35133,-6.6263 2.615877,-6.79332 5.802705,-10.14855 18.375215,-19.34621 2.806048,-2.05282 6.129907,-4.50082 7.386333,-5.44 2.156533,-1.61197 4.349138,-4.23344 5.713438,-6.83092 0.597725,-1.13799 0.57898,-1.15155 -1.144145,-0.8283 -1.076613,0.20198 -1.7518,0.13865 -1.7518,-0.16431 0,-0.67984 1.944848,-4.35348 2.479794,-4.68409 0.526917,-0.32565 0.582603,-1.20686 0.07121,-1.1261 -2.108201,0.33287 -2.108201,-1.56223 0,-3.0475 0.868539,-0.6119 2.045781,-1.556057 2.616111,-2.098137 1.159651,-1.10224 2.355721,-4.34343 1.884301,-5.10621 -0.16839,-0.27247 -0.12933,-0.4971 0.0869,-0.49918 0.61136,-0.005 1.58122,-2.415571 1.284,-3.190147 -0.14631,-0.381277 -0.024,-0.693231 0.27185,-0.693231 0.29584,0 0.53789,-0.543501 0.53789,-1.207773 0,-1.256485 0.82733,-5.124559 1.45647,-6.809516 0.24674,-0.660801 -0.0355,-1.671523 -0.88212,-3.158325 -1.06581,-1.871909 -1.10381,-2.064178 -0.26403,-1.336214 0.53952,0.467675 1.1573,0.850318 1.37285,0.850318 0.89453,0 2.6899,-2.571595 2.6899,-3.852862 0,-1.449914 0.899687,-4.010403 2.402317,-6.836849 0.49726,-0.935351 1.1787,-2.629912 1.51433,-3.765694 0.56313,-1.90566 1.42819,-2.816559 1.42819,-1.503855 0,0.318256 0.4207,0.180482 0.9718,-0.318256 1.19682,-1.083108 1.28644,-0.431597 0.12148,0.883048 -0.62326,0.703339 -0.68813,1.016296 -0.24295,1.172017 0.33405,0.116854 0.60737,0.638399 0.60737,1.159001 0,0.520603 0.32237,1.070252 0.71636,1.221442 1.15556,0.443431 2.08692,-0.894246 1.83199,-2.631223 -0.17415,-1.186523 -0.0478,-1.561336 0.52616,-1.561336 0.41542,0 0.89045,0.218653 1.05561,0.485896 0.56681,0.917127 1.94557,0.475584 3.69572,-1.18355 3.46667,-3.28635 6.67978,-4.473812 8.68102,-3.208213 0.61274,0.387502 0.59538,0.498305 -0.12107,0.773245 -0.74258,0.284951 -0.70521,0.424056 0.33321,1.240878 0.64323,0.505974 1.7221,0.919952 2.39747,0.919952 0.67537,0 1.81257,0.222277 2.52712,0.493949 1.0598,0.402933 1.1921,0.622969 0.71806,1.194157 -0.5548,0.668502 -0.49397,2.073614 0.23317,5.384602 0.23301,1.061004 0.10895,1.665089 -0.43442,2.116081 -1.11797,0.927826 -0.28036,2.128357 3.00955,4.313578 6.39405,4.24704 7.94207,6.085976 8.54261,10.148001 0.25373,1.716236 0.10963,2.254062 -0.93756,3.498548 -1.18245,1.405253 -3.6941,2.976636 -4.75781,2.976636 -0.27577,0 -0.95279,-0.400848 -1.5045,-0.890782 -0.88888,-0.789356 -4.83566,-2.51049 -5.75684,-2.51049 -0.1915,0 -0.34818,0.353126 -0.34818,0.784726 0,0.721176 -0.0964,0.721532 -1.19093,0.0044 -1.60101,-1.048995 -5.61161,-1.537532 -5.61161,-0.683532 0,0.345087 0.85234,2.384628 1.89408,4.532333 1.65636,3.4148 2.25096,4.14635 4.73749,5.82868 1.56387,1.05806 3.01552,1.99935 3.22589,2.091737 0.21038,0.0924 1.89445,-0.935167 3.74242,-2.283477 4.38483,-3.19928 5.91289,-3.95819 7.96968,-3.95819 0.93285,0 1.83123,-0.21866 1.99639,-0.4859 0.16517,-0.26725 0.90026,-0.4859 1.63354,-0.4859 0.73329,0 3.09548,-0.85221 5.24934,-1.893779 2.15385,-1.041575 5.20342,-2.146114 6.77684,-2.454534 1.57341,-0.308422 4.00938,-0.913217 5.41325,-1.343991 1.40387,-0.430774 2.71579,-0.619437 2.91538,-0.419252 0.19958,0.200186 0.35547,1.642419 0.34639,3.204975 -0.0182,3.129801 -1.02499,4.844251 -2.85273,4.857601 -2.58309,0.0189 -2.72742,1.61065 -0.27307,3.01167 1.83276,1.04616 2.28663,2.17493 1.2795,3.182047 -0.57397,0.57394 -1.88609,0.81169 -4.95075,0.897 -4.04604,0.11267 -4.22091,0.0712 -5.89117,-1.39528 -2.28135,-2.003057 -4.9313,-2.290477 -7.106,-0.770767 -2.22124,1.552247 -8.90522,7.921127 -12.0155,11.449047 -0.66809,0.75782 -2.00391,1.96145 -2.96846,2.67473 -0.96455,0.71329 -2.13707,2.10471 -2.6056,3.09206 -1.10462,2.32783 -5.91946,9.7537 -7.51783,11.59468 -2.2747,2.61995 -8.96676,9.70179 -12.42279,13.14633 -3.27276,3.26188 -11.397987,8.62538 -15.825967,10.44677 -2.437195,1.00251 -3.19764,1.73026 -3.526591,3.375 -0.155061,0.77529 -0.723201,1.82072 -1.262541,2.32319 -0.719786,0.6706 -1.182407,2.19904 -1.739294,5.74647 -0.41728,2.65806 -0.966936,6.03544 -1.221469,7.50528 -0.530194,3.06168 -0.153161,7.41334 0.807577,9.32107 0.955518,1.89738 6.037228,6.24078 9.280758,7.93236 2.0019,1.04406 3.00335,1.91605 3.50417,3.05115 0.40547,0.91905 1.17392,1.70797 1.8221,1.87065 1.411567,0.35428 1.419427,0.8467 0.0277,1.7293 -0.80393,0.50982 -1.67127,0.59023 -3.27732,0.30385 -1.20123,-0.21419 -2.52923,-0.27987 -2.95111,-0.14598 -1.16459,0.36962 -3.857319,-1.13692 -3.534718,-1.97762 0.171768,-0.44761 -0.03388,-0.70536 -0.562838,-0.70536 -0.66527,0 -0.766271,0.26788 -0.500402,1.32716 0.1832,0.72993 0.370891,1.54989 0.417101,1.8221 0.04807,0.28294 -1.288188,0.55576 -3.119323,0.63689 -2.399317,0.10633 -3.356598,-0.0427 -3.813945,-0.59382 -0.537646,-0.64782 -0.696123,-0.65025 -1.325927,-0.0205 -0.747277,0.74729 -2.879831,0.98055 -3.207859,0.35088 z"
|
|
73
|
+
id="path1692" /><rect
|
|
74
|
+
style="fill:#ffff00;stroke:none;stroke-width:2.26466;stroke-linejoin:bevel;-inkscape-stroke:none;stop-color:#000000"
|
|
75
|
+
id="rect1893"
|
|
76
|
+
width="88.679382"
|
|
77
|
+
height="88.679382"
|
|
78
|
+
x="14.784949"
|
|
79
|
+
y="33.804947" /><rect
|
|
80
|
+
style="fill:#ffff00;stroke:none;stroke-width:2.26466;stroke-linejoin:bevel;-inkscape-stroke:none;stop-color:#000000"
|
|
81
|
+
id="rect1893-3"
|
|
82
|
+
width="88.679382"
|
|
83
|
+
height="88.679382"
|
|
84
|
+
x="107.35763"
|
|
85
|
+
y="33.804947" /><rect
|
|
86
|
+
style="fill:#ffff00;stroke:none;stroke-width:2.26466;stroke-linejoin:bevel;-inkscape-stroke:none;stop-color:#000000"
|
|
87
|
+
id="rect1893-6"
|
|
88
|
+
width="88.679382"
|
|
89
|
+
height="88.679382"
|
|
90
|
+
x="14.784949"
|
|
91
|
+
y="126.37762" /><rect
|
|
92
|
+
style="fill:#ffff00;stroke:none;stroke-width:2.26466;stroke-linejoin:bevel;-inkscape-stroke:none;stop-color:#000000"
|
|
93
|
+
id="rect1893-3-7"
|
|
94
|
+
width="88.679382"
|
|
95
|
+
height="88.679382"
|
|
96
|
+
x="107.35763"
|
|
97
|
+
y="126.37762" /></g><g
|
|
98
|
+
inkscape:groupmode="layer"
|
|
99
|
+
id="layer2"
|
|
100
|
+
inkscape:label="Ebene 2"><g
|
|
101
|
+
id="path2775-1-75"
|
|
102
|
+
transform="translate(-15.635683,38.72538)"
|
|
103
|
+
class="UnoptimicedTransforms"
|
|
104
|
+
style="fill:none;stroke:#000000"><path
|
|
105
|
+
style="color:#000000;fill:#ffffff;stroke:none;stroke-width:1.35977;-inkscape-stroke:none"
|
|
106
|
+
d="m 116.06031,-38.647596 -12.09913,5.753477 c -17.488322,8.316362 -22.301909,9.35968 -38.253772,8.293301 -7.553615,-0.504913 -15.683902,-1.325396 -18.066827,-1.822874 l -4.332424,-0.905016 0.62475,43.655879 c 0.665147,46.462334 1.261752,51.533524 8.636408,73.410844 3.551008,10.534175 13.799216,28.047805 22.32219,38.147805 7.696714,9.12087 22.800343,22.3055 33.054855,28.85501 3.89238,2.48598 7.69225,4.52936 8.44421,4.53379 2.24865,0.0221 23.00341,-16.33498 32.17003,-25.35374 16.75525,-16.48496 29.87321,-39.286585 35.42083,-61.568585 2.60952,-10.48132 2.9113,-15.507385 3.42237,-56.961398 l 0.56053,-45.465911 -7.51902,1.975622 c -10.30985,2.708591 -29.20312,2.565933 -37.84506,-0.286228 -3.84386,-1.2686 -11.38806,-4.546886 -16.76458,-7.28462 z"
|
|
107
|
+
id="path992" /></g><g
|
|
108
|
+
id="g2513"
|
|
109
|
+
transform="matrix(0.96227612,0,0,0.97544132,4.16167,-28.576473)"><path
|
|
110
|
+
style="fill:#321f32;fill-opacity:1;stroke-width:0.485896"
|
|
111
|
+
d="m 106.73871,125.75874 v 17.70589 c 0.29824,-0.26739 0.58008,-0.52819 0.82682,-0.77411 3.45603,-3.44453 10.14832,-10.52654 12.42302,-13.14648 0.5896,-0.67909 1.61901,-2.12256 2.73627,-3.7853 z"
|
|
112
|
+
id="path2492" /><path
|
|
113
|
+
style="fill:#231623;fill-opacity:1;stroke-width:0.485896"
|
|
114
|
+
d="m 70.493371,125.75874 c -10.786828,8.01657 -13.753752,11.36676 -16.212447,17.75189 -1.706333,4.4313 -2.443193,5.55385 -4.351156,6.62647 -3.097724,1.74148 -6.864262,4.48504 -7.81296,5.69112 -0.546971,0.69535 -1.1292,2.28771 -1.293461,3.53829 -0.16426,1.2506 -0.819188,4.35121 -1.455725,6.89002 12.416408,17.46424 12.898954,21.47259 16.310633,30.42966 10.927692,2.49612 6.08334,-2.40961 3.060795,-3.21996 -2.058438,0 -5.800192,-3.31659 -6.472474,-5.73711 -0.606452,-2.18332 -0.661918,-6.74099 -0.0863,-7.09673 0.229755,-0.14199 0.381043,-2.06819 0.336413,-4.28036 -0.09046,-4.48121 1.016717,-21.08528 1.453142,-21.79143 0.508514,-0.8228 0.940615,-0.46242 1.92288,1.603 1.434115,3.0155 6.150675,7.81843 9.256282,9.42578 2.599298,1.34531 2.686354,1.45378 2.402954,2.99982 -0.161709,0.88223 -1.156925,2.93854 -2.211234,4.56975 -1.054279,1.63117 -1.916679,3.36431 -1.916679,3.85144 0,0.78059 2.88562,4.50133 8.474935,10.92853 2.273528,2.61435 3.11664,4.36722 3.24528,6.74584 0.05771,1.06692 0.190156,2.10383 0.294555,2.30426 h 5.17e-4 c 0.32803,0.62967 2.460287,0.3964 3.207556,-0.35089 0.62981,-0.62975 0.788368,-0.62715 1.326018,0.0207 0.457349,0.55112 1.41493,0.7001 3.814237,0.59377 1.831138,-0.0811 3.16729,-0.35372 3.11919,-0.63666 -0.04621,-0.27221 -0.233829,-1.09218 -0.417029,-1.82211 -0.26587,-1.05928 -0.165042,-1.32757 0.500228,-1.32757 0.528939,0 0.734516,0.25778 0.562756,0.70539 -0.3226,0.8407 2.370079,2.34727 3.534668,1.97765 0.42188,-0.13389 1.750012,-0.0679 2.951241,0.14625 1.606048,0.28638 2.47339,0.20596 3.277319,-0.30386 1.391722,-0.8826 1.383657,-1.37533 -0.02791,-1.72961 -0.648179,-0.16268 -1.416641,-0.95164 -1.822111,-1.87069 -0.500819,-1.13509 -1.502281,-2.00691 -3.504179,-3.05097 -3.243527,-1.69158 -8.325061,-6.03496 -9.28057,-7.93233 -0.960739,-1.90773 -1.337892,-6.25921 -0.807703,-9.32088 0.25453,-1.46984 0.804351,-4.84743 1.221631,-7.50549 0.556889,-3.54742 1.019649,-5.07582 1.739429,-5.74642 0.539339,-0.50247 1.107395,-1.54808 1.262455,-2.32337 0.32895,-1.64474 1.089212,-2.37248 3.5264,-3.37499 3.900304,-1.60433 10.665593,-5.95515 14.460093,-9.19892 v -18.17928 z"
|
|
115
|
+
id="path2490"
|
|
116
|
+
sodipodi:nodetypes="cssssccccscsssssssscccsccsssscssssssssssccc" /><path
|
|
117
|
+
style="fill:#3c1c3c;fill-opacity:1;stroke-width:0.485896"
|
|
118
|
+
d="m 103.6531,59.857844 c -0.12964,-0.02519 -0.42246,0.136955 -0.87127,0.54312 -0.5511,0.498737 -0.97203,0.636582 -0.97203,0.318327 0,-1.312703 -0.86469,-0.401874 -1.42782,1.503784 -0.33563,1.135781 -1.017374,2.830311 -1.51463,3.765661 -1.502623,2.826443 -2.402438,5.38688 -2.402438,6.836792 0,1.281266 -1.795229,3.852995 -2.689758,3.852995 -0.21555,0 -0.833523,-0.382919 -1.373043,-0.850594 -0.839779,-0.727963 -0.801742,-0.535555 0.264067,1.336353 0.846619,1.4868 1.128856,2.497663 0.882116,3.158463 -0.629139,1.684955 -1.456241,5.55292 -1.456241,6.809404 0,0.664271 -0.242112,1.207678 -0.537952,1.207678 -0.29585,0 -0.418128,0.311704 -0.271818,0.692981 0.29722,0.774575 -0.6728,3.185503 -1.284159,3.190503 -0.21623,0.0021 -0.255207,0.226724 -0.08682,0.499194 0.47142,0.762779 -0.724474,4.003909 -1.884123,5.106148 -0.570329,0.54208 -1.747838,1.486163 -2.616377,2.09806 -2.108198,1.485267 -2.108198,3.380227 0,3.047357 0.511409,-0.0808 0.456122,0.80038 -0.0708,1.12603 -0.53494,0.33061 -2.479952,4.00463 -2.479952,4.68447 0,0.30296 0.675222,0.36631 1.751831,0.16433 1.723118,-0.32325 1.741846,-0.30962 1.144116,0.82837 -1.364298,2.59748 -3.556818,5.21862 -5.713346,6.83059 -1.256429,0.93918 -4.580582,3.38716 -7.386629,5.43998 -0.500024,0.3658 -0.960551,0.70733 -1.431438,1.05523 H 104.08305 V 64.865291 c -0.0331,-0.0099 -0.0657,-0.01609 -0.0992,-0.02894 -0.39399,-0.15119 -0.71624,-0.701029 -0.71624,-1.221631 0,-0.520601 -0.27315,-1.042248 -0.6072,-1.159102 -0.44518,-0.155721 -0.38038,-0.468684 0.24288,-1.172022 0.7281,-0.821652 0.96589,-1.383766 0.74983,-1.425753 z"
|
|
119
|
+
id="path2488" /><path
|
|
120
|
+
style="fill:#481b48;fill-opacity:1;stroke-width:0.485896"
|
|
121
|
+
d="m 120.1782,56.243078 c -1.91046,-0.0459 -4.36805,1.238373 -6.96805,3.703133 -1.75015,1.659132 -3.12909,2.100516 -3.6959,1.18339 -0.16516,-0.267242 -0.63981,-0.485758 -1.05523,-0.485758 -0.57396,0 -0.70073,0.374623 -0.52658,1.561145 0.20561,1.400965 -0.36071,2.541074 -1.19373,2.69751 v 58.200572 h 16.34319 c 1.81776,-2.7354 3.77046,-5.89198 4.42454,-7.27035 0.46853,-0.98735 1.64097,-2.37903 2.60552,-3.09232 0.96455,-0.71328 2.30021,-1.91695 2.9683,-2.67477 3.11027,-3.52792 9.79456,-9.89667 12.0158,-11.448911 2.1747,-1.519709 4.82468,-1.232043 7.10603,0.771017 1.67025,1.466464 1.84507,1.507924 5.89111,1.395254 3.06466,-0.0853 4.37663,-0.32316 4.9506,-0.897097 1.00713,-1.007117 0.55325,-2.136077 -1.27951,-3.182236 -2.45434,-1.401018 -2.31023,-2.992802 0.27285,-3.011702 1.82774,-0.01335 2.83486,-1.727787 2.85306,-4.857585 0.009,-1.562554 -0.14665,-3.004786 -0.34623,-3.204972 -0.19959,-0.200185 -1.51172,-0.01116 -2.91559,0.419613 -1.40386,0.430773 -3.83969,1.035165 -5.4131,1.343587 -1.57342,0.308419 -4.623,1.413056 -6.77685,2.45463 -2.15386,1.041568 -4.516,1.893942 -5.24929,1.893942 -0.73328,0 -1.46884,0.218508 -1.63401,0.485758 -0.16516,0.26724 -1.06341,0.485759 -1.99626,0.485759 -2.05679,0 -3.58471,0.759137 -7.96954,3.958414 -1.84797,1.348309 -3.53203,2.375985 -3.74241,2.283585 -0.21037,-0.09239 -1.66229,-1.033806 -3.22616,-2.091865 -2.48652,-1.682329 -3.08082,-2.413788 -4.73718,-5.828585 -1.04173,-2.147703 -1.89394,-4.187453 -1.89394,-4.53254 0,-0.853999 4.01054,-0.365315 5.61155,0.683679 1.09453,0.717132 1.19062,0.716525 1.19062,-0.0047 0,-0.431599 0.1568,-0.784448 0.3483,-0.784448 0.92118,0 4.86788,1.721086 5.75676,2.510441 0.5517,0.489934 1.22904,0.890902 1.50481,0.890902 1.06371,0 3.5754,-1.571311 4.75785,-2.976563 1.04719,-1.244484 1.19114,-1.78226 0.93741,-3.498494 -0.60054,-4.062021 -2.14858,-5.901182 -8.54263,-10.148218 -3.28991,-2.185219 -4.1276,-3.385607 -3.00963,-4.313432 0.54337,-0.450991 0.6676,-1.055147 0.4346,-2.116149 -0.72714,-3.310985 -0.78838,-4.716183 -0.23358,-5.384685 0.47404,-0.571187 0.34201,-0.791309 -0.71779,-1.194242 -0.71455,-0.271672 -1.85161,-0.494027 -2.52698,-0.494027 -0.67536,0 -1.75455,-0.413867 -2.39778,-0.91984 -1.03842,-0.816821 -1.07589,-0.955801 -0.33332,-1.240751 0.71645,-0.27494 0.73418,-0.385578 0.12144,-0.77308 -0.5003,-0.316399 -1.07625,-0.479759 -1.71307,-0.49506 z"
|
|
122
|
+
id="path1692-5" /></g><path
|
|
123
|
+
id="path2775-1"
|
|
124
|
+
style="fill:url(#linearGradient4239);fill-opacity:1;stroke:#000000;stroke-width:1.35977"
|
|
125
|
+
d="M 100.42463,0.07778856 88.325491,5.8312659 C 70.837174,14.147628 66.023587,15.190946 50.071724,14.124567 42.518109,13.619654 34.387822,12.799171 32.004897,12.301693 l -4.332424,-0.905016 0.62475,43.655879 c 0.665147,46.462334 1.261752,51.533524 8.636408,73.410844 3.551008,10.53418 13.799216,28.04781 22.32219,38.14781 7.696714,9.12087 22.800343,22.30549 33.054856,28.855 3.892377,2.48598 7.692253,4.52936 8.444213,4.53379 2.24865,0.0221 23.0034,-16.33498 32.17003,-25.35373 16.75525,-16.48496 29.87321,-39.28659 35.42083,-61.56859 2.60952,-10.48132 2.9113,-15.507385 3.42237,-56.961398 l 0.56053,-45.465911 -7.51902,1.975622 c -10.30985,2.708591 -29.20312,2.565933 -37.84506,-0.286228 -3.84386,-1.2686 -11.38806,-4.5468857 -16.76458,-7.2846199 z m -0.0408,9.60885264 8.83594,4.4993918 c 4.85966,2.474535 11.67833,5.437077 15.15273,6.583724 7.81118,2.577973 24.88876,2.707201 34.20757,0.258708 l 6.79611,-1.785721 -0.50688,41.095414 c -0.46189,37.469163 -0.73477,42.012172 -3.09347,51.485902 -5.01432,20.14016 -16.87126,40.74966 -32.01591,55.64997 -8.28545,8.15181 -27.04495,22.93669 -29.07746,22.91666 -0.67966,-0.005 -4.114525,-1.85057 -7.632781,-4.09757 -9.268833,-5.91994 -22.920632,-17.83711 -29.877496,-26.08123 -7.70371,-9.12907 -16.966277,-24.9594 -20.175931,-34.48096 -6.665734,-19.77435 -7.204954,-24.35814 -7.80616,-66.354207 l -0.565119,-39.45923 3.916383,0.818321 c 2.153879,0.449683 9.502186,1.191264 16.329729,1.647651 14.41848,0.963856 18.769612,0.01805 34.576824,-7.496539 z" /><path
|
|
126
|
+
inkscape:original-d="M 0,0"
|
|
127
|
+
inkscape:path-effect="#path-effect996"
|
|
128
|
+
d="M 0,0"
|
|
129
|
+
id="path998"
|
|
130
|
+
class="UnoptimicedTransforms" /><path
|
|
131
|
+
id="path2775-1-7"
|
|
132
|
+
style="fill:#ffffff;stroke:#000000;stroke-width:1.35977"
|
|
133
|
+
d="M 100.42463,0.07778395 88.325488,5.8312613 C 81.882978,8.8949245 77.165159,10.965428 72.972331,12.313155 l 2.369187,8.50843 c 3.846075,-1.215912 8.167679,-3.111446 14.106409,-5.934664 l 10.935863,-5.2002844 8.83596,4.4993914 c 4.85965,2.474518 11.67831,5.437087 15.15271,6.583725 0.12713,0.04196 0.26343,0.08135 0.3954,0.122014 l 2.36643,-8.499257 c -0.0555,-0.01782 -0.11507,-0.03473 -0.16972,-0.05275 -3.84377,-1.26859 -11.38816,-4.5469114 -16.76458,-7.2846179 z m 71.90402,10.57258305 -7.51902,1.975622 c -3.90112,1.024907 -9.03188,1.640722 -14.37061,1.856819 l -5.51266,8.247889 c 5.06254,-0.169594 9.96601,-0.733323 13.65367,-1.702237 l 6.79611,-1.78572 -0.19404,15.722868 6.88601,-3.17925 z m -144.65618,0.746305 0.297697,20.810772 6.876375,3.174664 -0.221552,-15.46462 3.916384,0.818321 c 2.141999,0.44721 9.421438,1.181964 16.216889,1.638936 L 49.199732,14.058969 C 41.902746,13.551045 34.296247,12.780047 32.004895,12.301688 Z m 144.12272,42.533898 -6.85666,0.791258 -0.0692,5.616326 c -0.0844,6.846077 -0.16297,12.570852 -0.24862,17.449415 l 6.84565,-0.904096 c 0.10551,-5.70791 0.19972,-12.485225 0.30181,-20.767196 z m -143.506684,0.508699 0.0088,0.613282 c 0.126427,8.831296 0.253253,16.109511 0.422004,22.350173 l 6.815368,0.900421 C 35.399233,72.954747 35.295539,66.742541 35.190093,59.376718 l -0.05917,-4.147567 z M 163.96105,97.639655 c -0.42307,6.285705 -1.06915,9.701565 -2.18526,14.184385 -0.80192,3.22094 -1.78083,6.45381 -2.91824,9.67353 l 6.19749,2.45496 c 1.28458,-3.6192 2.38914,-7.25372 3.29071,-10.87486 1.14434,-4.59626 1.84466,-8.14499 2.31369,-14.175208 z m -127.423738,0.489439 -6.609871,1.245829 c 0.984366,9.361367 2.638751,15.797807 5.638344,24.972547 l 6.161262,-2.44028 C 38.902341,113.25624 37.406099,107.27168 36.537312,98.129094 Z M 149.64409,141.47718 c -4.5306,7.89765 -9.93183,15.34664 -15.949,21.91303 l 5.40715,4.70763 c 5.92851,-6.75685 11.273,-14.28379 15.82424,-22.21806 z m -98.923308,0.45777 -5.275512,4.39619 c 4.246664,7.41346 9.269548,14.89881 13.810548,20.28006 0.570427,0.67599 1.186156,1.37632 1.832966,2.09259 l 5.458533,-4.75259 c -1.236371,-1.30098 -2.380206,-2.56032 -3.375116,-3.73932 -4.093518,-4.85093 -8.619604,-11.59363 -12.451419,-18.27693 z m 66.764288,36.35247 c -7.70733,6.32979 -15.53068,12.1158 -16.80265,12.10326 -0.67966,-0.005 -4.11453,-1.85057 -7.632778,-4.09757 -3.067022,-1.9589 -6.61544,-4.5811 -10.240943,-7.50296 l -3.951243,6.64014 c 4.737249,3.92814 9.462457,7.48706 13.453219,10.03591 3.892377,2.48598 7.692255,4.52935 8.444215,4.53379 1.5216,0.015 11.51537,-7.47181 20.66032,-15.1082 z" /></g></svg>
|