Class: Taglish::TagType
- Inherits:
-
Object
- Object
- Taglish::TagType
- Defined in:
- lib/taglish/tag_type.rb
Instance Attribute Summary collapse
-
#delimiter ⇒ Object
Returns the value of attribute delimiter.
-
#force_lowercase ⇒ Object
Returns the value of attribute force_lowercase.
-
#force_parameterize ⇒ Object
Returns the value of attribute force_parameterize.
-
#name ⇒ Object
Returns the value of attribute name.
-
#ordered ⇒ Object
Returns the value of attribute ordered.
-
#score_delimiter ⇒ Object
Returns the value of attribute score_delimiter.
-
#scored ⇒ Object
Returns the value of attribute scored.
Instance Method Summary collapse
- #find_or_create_tags(*tag_list) ⇒ Object
-
#glue ⇒ Object
Returns the proper string used to join tags: basically the first choice of delimiters, with a space after each delimiter.
-
#initialize(name, opts = {}) ⇒ TagType
constructor
A new instance of TagType.
- #name_and_score(tag_str) ⇒ Object
- #ordered? ⇒ Boolean
- #scored? ⇒ Boolean
Constructor Details
#initialize(name, opts = {}) ⇒ TagType
Returns a new instance of TagType.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/taglish/tag_type.rb', line 5 def initialize(name, opts={}) opts = { :scored => false, :ordered => false, :delimiter => Taglish::DEFAULT_DELIMITER, :score_delimiter => Taglish::DEFAULT_SCORE_DELIMITER, :force_parameterize => false, :force_lowercase => false }.merge(opts) self.name = name self.scored = opts[:scored] self.ordered = opts[:ordered] self.delimiter = opts[:delimiter] self.score_delimiter = opts[:score_delimiter] self.force_parameterize = opts[:force_parameterize] self.force_lowercase = opts[:force_lowercase] end |
Instance Attribute Details
#delimiter ⇒ Object
Returns the value of attribute delimiter.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def delimiter @delimiter end |
#force_lowercase ⇒ Object
Returns the value of attribute force_lowercase.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def force_lowercase @force_lowercase end |
#force_parameterize ⇒ Object
Returns the value of attribute force_parameterize.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def force_parameterize @force_parameterize end |
#name ⇒ Object
Returns the value of attribute name.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def name @name end |
#ordered ⇒ Object
Returns the value of attribute ordered.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def ordered @ordered end |
#score_delimiter ⇒ Object
Returns the value of attribute score_delimiter.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def score_delimiter @score_delimiter end |
#scored ⇒ Object
Returns the value of attribute scored.
2 3 4 |
# File 'lib/taglish/tag_type.rb', line 2 def scored @scored end |
Instance Method Details
#find_or_create_tags(*tag_list) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/taglish/tag_type.rb', line 41 def (*tag_list) return [] if tag_list.empty? list = scored ? tag_list.map{|t| name_and_score(t)[0]} : tag_list = Tag.named_any(list).all new_tag_names = list.reject do |name| name = comparable_name(name) .any? {|tag| comparable_name(tag.name) == name} end = new_tag_names.map {|name| Tag.create(:name => name) } + end |
#glue ⇒ Object
Returns the proper string used to join tags: basically the first choice of delimiters, with a space after each delimiter.
60 61 62 63 |
# File 'lib/taglish/tag_type.rb', line 60 def glue d = delimiter.kind_of?(Array) ? delimiter[0] : delimiter d.ends_with?(" ") ? d : "#{d} " end |
#name_and_score(tag_str) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/taglish/tag_type.rb', line 32 def name_and_score(tag_str) if scored tag_str =~ Taglish::Taggable::SCORED_TAG_REGEX or raise "Scored tag has no score: #{tag_str}" [$1, $2.to_i] else [tag_str, nil] end end |
#ordered? ⇒ Boolean
28 29 30 |
# File 'lib/taglish/tag_type.rb', line 28 def ordered? ordered end |
#scored? ⇒ Boolean
24 25 26 |
# File 'lib/taglish/tag_type.rb', line 24 def scored? scored end |