module Psychgus::Stylables::CapStylable
(see Stylers::CapStyler
)
Attributes
delim[R]
each_word[RW]
new_delim[RW]
Public Class Methods
new(each_word: true,new_delim: nil,delim: /[\s_\-]/,**kargs)
click to toggle source
@param each_word
[true,false] whether to capitalize each word separated by delim
@param new_delim
[nil,String] the replacement for each delim
if not nil @param delim [String,Regexp] the delimiter to split on @param kargs [Hash] capture extra keyword args, so no error for undefined args
# File lib/psychgus/stylables.rb, line 74 def initialize(each_word: true,new_delim: nil,delim: /[\s_\-]/,**kargs) delim = Regexp.quote(delim.to_s) unless delim.is_a?(Regexp) @delim = Regexp.new("(#{delim})") @each_word = each_word @new_delim = new_delim end
Public Instance Methods
cap_word(word)
click to toggle source
Capitalize an individual word (not words).
This method can safely be overridden with a new implementation.
@param word [nil,String] the word to capitalize
@return [String] the capitalized word
# File lib/psychgus/stylables.rb, line 89 def cap_word(word) return word if word.nil? || word.empty? # Already capitalized, good for all-capitalized words, like 'BBQ' return word if word[0] == word[0].upcase return word.capitalize end
style_scalar(sniffer,node)
click to toggle source
Capitalize node.value
.
@see cap_word
@see Styler#style_scalar
# File lib/psychgus/stylables.rb, line 102 def style_scalar(sniffer,node) if !@each_word || node.value.nil? || node.value.empty? node.value = cap_word(node.value) return end is_delim = false node.value = node.value.split(@delim).map do |v| if is_delim v = @new_delim unless @new_delim.nil? else v = cap_word(v) end is_delim = !is_delim v end.join end