arkaan 1.9.0 → 1.10.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 +4 -4
- data/lib/arkaan.rb +0 -1
- data/lib/arkaan/campaigns/character.rb +6 -13
- data/lib/arkaan/ruleset.rb +0 -6
- data/lib/arkaan/version.rb +1 -1
- metadata +2 -12
- data/lib/arkaan/rulesets.rb +0 -13
- data/lib/arkaan/rulesets/blueprint.rb +0 -34
- data/lib/arkaan/rulesets/field.rb +0 -71
- data/lib/arkaan/rulesets/fields.rb +0 -10
- data/lib/arkaan/rulesets/fields/gauge.rb +0 -20
- data/lib/arkaan/rulesets/fields/integer.rb +0 -14
- data/lib/arkaan/rulesets/sheet.rb +0 -28
- data/lib/arkaan/rulesets/sheets.rb +0 -10
- data/lib/arkaan/rulesets/sheets/attribute.rb +0 -40
- data/lib/arkaan/rulesets/sheets/category.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3f79b8da492a5bfaf83581bd87a361d6037294f185ce6c2f2287f1d2a65b0e7
|
4
|
+
data.tar.gz: fc6f180aff359447096bbda6b5b7014c0b87de9f448d536024eac852a8581954
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dfb33ab03f87d8a8b8dadffa1c3ed4111924eb23c3cfb97863a3cfa104cae4f98ff4167b3c2aef0d88456db78d04ea13dad69c3e046aadf3e04259e3c4ec2ee
|
7
|
+
data.tar.gz: 99db55a4ae62a79d4c5aaab2f3922b30db0455aafa3083255ebd6be60f912c473c8d1445183b8d803b6bd4fba0ce7f501b3dfb5e5f0c77c69fc7c1df84db104c
|
data/lib/arkaan.rb
CHANGED
@@ -5,16 +5,16 @@ module Arkaan
|
|
5
5
|
class Character
|
6
6
|
include Mongoid::Document
|
7
7
|
include Mongoid::Timestamps
|
8
|
-
include Arkaan::Concerns::MimeTypable
|
9
|
-
include Arkaan::Campaigns::Files::Concerns::Nameable
|
10
8
|
|
11
9
|
# @!attribute [rw] selected
|
12
10
|
# @return [Boolean] TRUE if the sheet is currently selected by the player, FALSE otherwise.
|
13
11
|
field :selected, type: Boolean, default: false
|
14
|
-
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
12
|
+
|
13
|
+
# @!attribute [rw] data
|
14
|
+
# @return [Hash] the heart of the Arkaan::Campaigns::Character class, the polymorphic
|
15
|
+
# data representing all the fields of a character sheet are validated using the validator
|
16
|
+
# of the associated plugin, and created/updated with the corresponding form.
|
17
|
+
field :data, type: Hash, default: {}
|
18
18
|
|
19
19
|
# @!attribute [rw] invitation
|
20
20
|
# @return [Arkaan::Campaigns::Invitation] the invitation of the player playing this character.
|
@@ -26,13 +26,6 @@ module Arkaan
|
|
26
26
|
invitation.account
|
27
27
|
end
|
28
28
|
|
29
|
-
# Method used to dinamically determine what MIME types are allowed for this character sheet
|
30
|
-
# If the campaign this character is in has no ruleset, every MIME type is allowed.
|
31
|
-
# @return [Array<String>] the available MIME type for the campaign linked to this character.
|
32
|
-
def available_mime_types
|
33
|
-
invitation.campaign.ruleset.mime_types
|
34
|
-
end
|
35
|
-
|
36
29
|
def campaign
|
37
30
|
invitation.campaign
|
38
31
|
end
|
data/lib/arkaan/ruleset.rb
CHANGED
@@ -18,15 +18,9 @@ module Arkaan
|
|
18
18
|
# @!attribute [rw] creator
|
19
19
|
# @return [Arkaan::Account] the account of the user creating this ruleset.
|
20
20
|
belongs_to :creator, class_name: 'Arkaan::Account', inverse_of: :rulesets
|
21
|
-
# @!attribute [rw] blueprints
|
22
|
-
# @return [Arr ay<Arkaan::Rulesets::Blueprint>] the blueprints created inside this ruleset, see the class itself to know what it is.
|
23
|
-
has_many :blueprints, class_name: 'Arkaan::Rulesets::Blueprint', inverse_of: :ruleset
|
24
21
|
# @!attribute [rw] campaigns
|
25
22
|
# @return [Array<Arkaan::Campaign>] the campaigns using this set of rules.
|
26
23
|
has_many :campaigns, class_name: 'Arkaan::Campaign', inverse_of: :ruleset
|
27
|
-
# @!attribute [rw] sheet
|
28
|
-
# @return [Arkaan::Rulesets::Sheet] the character sheet template for this set of rules.
|
29
|
-
has_one :sheet, class_name: 'Arkaan::Rulesets::Sheet', inverse_of: :ruleset
|
30
24
|
|
31
25
|
validates :name,
|
32
26
|
presence: {message: 'required'},
|
data/lib/arkaan/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arkaan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Courtois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -350,16 +350,6 @@ files:
|
|
350
350
|
- lib/arkaan/permissions/right.rb
|
351
351
|
- lib/arkaan/phone.rb
|
352
352
|
- lib/arkaan/ruleset.rb
|
353
|
-
- lib/arkaan/rulesets.rb
|
354
|
-
- lib/arkaan/rulesets/blueprint.rb
|
355
|
-
- lib/arkaan/rulesets/field.rb
|
356
|
-
- lib/arkaan/rulesets/fields.rb
|
357
|
-
- lib/arkaan/rulesets/fields/gauge.rb
|
358
|
-
- lib/arkaan/rulesets/fields/integer.rb
|
359
|
-
- lib/arkaan/rulesets/sheet.rb
|
360
|
-
- lib/arkaan/rulesets/sheets.rb
|
361
|
-
- lib/arkaan/rulesets/sheets/attribute.rb
|
362
|
-
- lib/arkaan/rulesets/sheets/category.rb
|
363
353
|
- lib/arkaan/specs.rb
|
364
354
|
- lib/arkaan/utils.rb
|
365
355
|
- lib/arkaan/utils/controllers.rb
|
data/lib/arkaan/rulesets.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
# The rulesets module holds all the logic for components present inside a ruleset.
|
3
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
4
|
-
module Rulesets
|
5
|
-
autoload :Blueprint, 'arkaan/rulesets/blueprint'
|
6
|
-
autoload :Field , 'arkaan/rulesets/field'
|
7
|
-
autoload :Fields , 'arkaan/rulesets/fields'
|
8
|
-
autoload :Gauge , 'arkaan/rulesets/gauge'
|
9
|
-
autoload :Integer , 'arkaan/rulesets/integer'
|
10
|
-
autoload :Sheet , 'arkaan/rulesets/sheet'
|
11
|
-
autoload :Sheets , 'arkaan/rulesets/sheets'
|
12
|
-
end
|
13
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
# A blueprint defines what a type of entity contains.
|
4
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
-
class Blueprint
|
6
|
-
include Mongoid::Document
|
7
|
-
include Mongoid::Timestamps
|
8
|
-
|
9
|
-
# @!attribute [rw] name
|
10
|
-
# @return [String] the name of this type of entity in the ruleset.
|
11
|
-
field :name, type: String
|
12
|
-
|
13
|
-
# @!attribute [rw] ruleset
|
14
|
-
# @return [Arkaan::Ruleset] the ruleset to which this blueprint belongs.
|
15
|
-
belongs_to :ruleset, class_name: 'Arkaan::Ruleset', inverse_of: :blueprints
|
16
|
-
# @!attribute [rw] _fields
|
17
|
-
# @return [Array<Arkaan::Rulesets::Field>] the field composing the attributes of this blueprint.
|
18
|
-
embeds_many :_fields, class_name: 'Arkaan::Rulesets::Field', inverse_of: :blueprint
|
19
|
-
|
20
|
-
validates :name,
|
21
|
-
presence: {message: 'required'},
|
22
|
-
length: {minimum: 4, message: 'minlength', if: :name?}
|
23
|
-
|
24
|
-
validate :name_unicity
|
25
|
-
|
26
|
-
def name_unicity
|
27
|
-
has_duplicate = ruleset.blueprints.where(:_id.ne => _id, name: name).exists?
|
28
|
-
if !ruleset.nil? && name? && has_duplicate
|
29
|
-
errors.add(:name, 'uniq')
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
# A field is an attribute of a blueprint, with a type and a name.
|
4
|
-
# It does not have a defined value as it will be given in the instance of the blueprint.
|
5
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
6
|
-
class Field
|
7
|
-
include Mongoid::Document
|
8
|
-
include Mongoid::Timestamps
|
9
|
-
include Arkaan::Concerns::Enumerable
|
10
|
-
|
11
|
-
# @!attribute [rw] name
|
12
|
-
# @return [String] the name of the field is comparable to the name of a variable.
|
13
|
-
field :name, type: String
|
14
|
-
# @!attribute [rw] data
|
15
|
-
# @return [Hash] the additional data, mainly constraints and needed values, for the field.
|
16
|
-
field :data, type: Hash, default: {}
|
17
|
-
|
18
|
-
# @!attribute [rw] blueprint
|
19
|
-
# @return [Arkaan::Rulesets::Blueprint] the blueprint in which the field belongs.
|
20
|
-
embedded_in :blueprint, class_name: 'Arkaan::Rulesets::Blueprint', inverse_of: :_fields
|
21
|
-
|
22
|
-
validates :name,
|
23
|
-
presence: {message: 'required'},
|
24
|
-
length: {minimum: 4, message: 'minlength', if: :name?},
|
25
|
-
format: {with: /\A[a-zA-Z_]*\z/, message: 'pattern', if: :name?}
|
26
|
-
|
27
|
-
validate :name_unicity
|
28
|
-
|
29
|
-
validate :options_validity
|
30
|
-
|
31
|
-
# Getter for the type of the field, returning simply the last element of the type for simpler use.
|
32
|
-
# @return [Symbol] the name of the type of the field (eq :Integer or :Gauge)
|
33
|
-
def type
|
34
|
-
return _type.split('::').last.to_sym
|
35
|
-
end
|
36
|
-
|
37
|
-
# Default options for this type of field, specialize it in the subclasses.
|
38
|
-
# @return [Hash] a hash with the default value for all options you want default values on.
|
39
|
-
def default_options
|
40
|
-
return {}
|
41
|
-
end
|
42
|
-
|
43
|
-
# Setter for the additional datas, merging it with the default options for the current type.
|
44
|
-
# @param new_data [Hash] the additional data to add to this field.
|
45
|
-
def data=(new_data)
|
46
|
-
self[:data] = default_options.merge(new_data)
|
47
|
-
end
|
48
|
-
|
49
|
-
def name_unicity
|
50
|
-
has_duplicate = blueprint._fields.where(:_id.ne => _id, name: name).exists?
|
51
|
-
if name? && blueprint && has_duplicate
|
52
|
-
errors.add(:name, 'uniq')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def options_validity
|
57
|
-
send(:validate_options) rescue true
|
58
|
-
end
|
59
|
-
|
60
|
-
# Checks the corresponding option key against the given data type. All types can be used.
|
61
|
-
# @param key [String] the name of the key in the options you want to check the type of.
|
62
|
-
# @param required_type [String] the exact name of the class you want to check the option against.
|
63
|
-
def check_type(key, required_type)
|
64
|
-
parsed_type = Object.const_get("::#{required_type}")
|
65
|
-
if !errors.messages.has_key?(:data) && data[key.to_sym] && !data[key.to_sym].is_a?(parsed_type)
|
66
|
-
errors.add(:data, "#{key.to_s}|type")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
# This module holds all the classes for the different fields types in the blueprints.
|
4
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
-
module Fields
|
6
|
-
autoload :Gauge , 'arkaan/rulesets/fields/gauge'
|
7
|
-
autoload :Integer, 'arkaan/rulesets/fields/integer'
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
module Fields
|
4
|
-
# A gauge is composed of a max value, and a min value, and when instanciated has a current value that can't go above max or below min.
|
5
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
6
|
-
class Gauge < Arkaan::Rulesets::Field
|
7
|
-
def default_options
|
8
|
-
return {initial: 0, max: 100, min: 0, show: true}
|
9
|
-
end
|
10
|
-
|
11
|
-
def validate_options
|
12
|
-
check_type(:initial, 'Integer')
|
13
|
-
check_type(:max, 'Integer')
|
14
|
-
check_type(:min, 'Integer')
|
15
|
-
check_type(:show, 'Boolean')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
module Fields
|
4
|
-
# An integer field can have a minimum and maximum value.
|
5
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
6
|
-
class Integer < Arkaan::Rulesets::Field
|
7
|
-
def validate_options
|
8
|
-
check_type(:max, 'Integer')
|
9
|
-
check_type(:min, 'Integer')
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
# A character sheet is the templating to parse and transform an uploaded
|
4
|
-
# XML file into a readable character sheet we can display on the interface.
|
5
|
-
# The main way to do it is to create attributes sorted into categories (optional)
|
6
|
-
# and to link each of these attributes to a XPath selector in the XML sheet
|
7
|
-
# the game master uploaded and linked to the player.
|
8
|
-
#
|
9
|
-
# This way we can just rebuild a JSON object with the categories and fields
|
10
|
-
# defined in the sheet, extracted from the XML sheet of the character.
|
11
|
-
#
|
12
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
13
|
-
class Sheet
|
14
|
-
include Mongoid::Document
|
15
|
-
include Mongoid::Timestamps
|
16
|
-
|
17
|
-
# @!attribute [rw] ruleset
|
18
|
-
# @return [Arkaan::Ruleset] the set of rules this sheet corresponds to.
|
19
|
-
belongs_to :ruleset, class_name: 'Arkaan::Ruleset', inverse_of: :sheet
|
20
|
-
# @!attribute [rw] creator
|
21
|
-
# @return [Arkaan::Account] the account of the creator of the sheet.
|
22
|
-
belongs_to :creator, class_name: 'Arkaan::Account'
|
23
|
-
# @!attribute [rw] categories
|
24
|
-
# @return [Array<Arkaan::Rulesets::Sheets::Category>] the categories declared in this sheet.
|
25
|
-
embeds_many :categories, class_name: 'Arkaan::Rulesets::Sheets::Category', inverse_of: :sheet
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
# This module regroups the entities embedded in a character sheet template.
|
4
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
-
module Sheets
|
6
|
-
autoload :Attribute, 'arkaan/rulesets/sheets/attribute'
|
7
|
-
autoload :Category , 'arkaan/rulesets/sheets/category'
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
module Sheets
|
4
|
-
class Attribute
|
5
|
-
include Mongoid::Document
|
6
|
-
include Mongoid::Timestamps
|
7
|
-
include Arkaan::Concerns::Enumerable
|
8
|
-
|
9
|
-
# @!attribute [rw] name
|
10
|
-
# @return [String] the name of the attribute in the character sheet.
|
11
|
-
# This name is then used in the translation files as a key to retrieve it.
|
12
|
-
field :name, type: String, default: ''
|
13
|
-
# @!attribute [rw] default
|
14
|
-
# @return [Object] the default value for this attribute. Not typed so it
|
15
|
-
# can be any type of value (mainly integer, strings or datetimes)
|
16
|
-
field :default
|
17
|
-
# @!attribute [rw] xpath
|
18
|
-
# @return [String] the path to find this attribute in the XML sheet uploaded.
|
19
|
-
field :xpath, type: String
|
20
|
-
|
21
|
-
# @!attribute [rw] category
|
22
|
-
# @return [Arkaan::Rulesets::Sheets::Category] the category the attribute is in.
|
23
|
-
embedded_in :category, class_name: 'Arkaan::Rulesets::Sheets::Category', inverse_of: :attrs
|
24
|
-
|
25
|
-
validates :name,
|
26
|
-
presence: {message: 'required'},
|
27
|
-
format: {with: /\A[a-zA-Z_]*\z/, message: 'pattern', if: :name?}
|
28
|
-
|
29
|
-
validate :name_unicity
|
30
|
-
|
31
|
-
def name_unicity
|
32
|
-
has_duplicate = category.attrs.where(:_id.ne => _id, name: name).exists?
|
33
|
-
if name? && category && has_duplicate
|
34
|
-
errors.add(:name, 'uniq')
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Arkaan
|
2
|
-
module Rulesets
|
3
|
-
module Sheets
|
4
|
-
# A category is just a semantic group of attributes having the same function
|
5
|
-
# or sharing some semantic proximity (eg. all characteristics or skills).
|
6
|
-
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
7
|
-
class Category
|
8
|
-
include Mongoid::Document
|
9
|
-
include Mongoid::Timestamps
|
10
|
-
|
11
|
-
# @!attribute [rw] name
|
12
|
-
# @return [String] the name of the category you're creating.
|
13
|
-
field :name, type: String, default: ''
|
14
|
-
|
15
|
-
# @!attribute [rw] sheet
|
16
|
-
# @return [Arkaan::Rulesets::Sheet] the sheet template the category is embedded in;
|
17
|
-
embedded_in :sheet, class_name: 'Arkaan::Rulesets::Sheet', inverse_of: :categories
|
18
|
-
|
19
|
-
# @!attribute [rw] attributes
|
20
|
-
# @return [Array<Arkaan::Rulesets::Sheets::Attribute>] the attributes linked to this category.
|
21
|
-
embeds_many :attrs, class_name: 'Arkaan::Rulesets::Sheets::Attribute', inverse_of: :category
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|