Class: Squib::Args::Typographer Private
- Inherits:
-
Object
- Object
- Squib::Args::Typographer
- Defined in:
- lib/squib/args/typographer.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Internal class for handling arguments
Instance Method Summary collapse
-
#apostraphize(str) ⇒ Object
private
A quote between two letters is an apostraphe.
-
#each_non_tag(str) ⇒ Object
private
Iterate over each non-tag for processing Allows us to ignore anything inside < and >.
-
#ellipsificate(str) ⇒ Object
private
Straightforward replace.
-
#em_dash(str) ⇒ Object
private
Straightforward replace.
-
#en_dash(str) ⇒ Object
private
Straightforward replace.
- #explicit_replacements(str) ⇒ Object private
-
#initialize(config = Conf::DEFAULTS) ⇒ Typographer
constructor
private
A new instance of Typographer.
-
#left_curly(str) ⇒ Object
private
Straightforward replace.
-
#left_double_quote(str) ⇒ Object
private
Quote next to non-whitespace curls.
-
#left_single_quote(str) ⇒ Object
private
Quote next to non-whitespace curls.
- #process(str) ⇒ Object private
-
#right_curly(str) ⇒ Object
private
Straightforward replace.
-
#right_double_quote(str) ⇒ Object
private
Quote next to non-whitespace curls.
-
#right_single_quote(str) ⇒ Object
private
Quote next to non-whitespace curls.
-
#single_inside_double_quote(str) ⇒ Object
private
Handle the cases where a double quote is next to a single quote.
- #smart_quotes(str) ⇒ Object private
Constructor Details
#initialize(config = Conf::DEFAULTS) ⇒ Typographer
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Typographer.
10 11 12 13 14 15 |
# File 'lib/squib/args/typographer.rb', line 10 def initialize(config = Conf::DEFAULTS) %w(lsquote ldquote rsquote rdquote smart_quotes em_dash en_dash ellipsis).each do |var| instance_variable_set("@#{var}", config[var]) end end |
Instance Method Details
#apostraphize(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A quote between two letters is an apostraphe
72 73 74 |
# File 'lib/squib/args/typographer.rb', line 72 def apostraphize(str) str.gsub(/(\w)(\')(\w)/, '\1' + @rsquote + '\3') end |
#each_non_tag(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Iterate over each non-tag for processing Allows us to ignore anything inside < and >
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/squib/args/typographer.rb', line 48 def each_non_tag(str) full_str = '' tag_delimit = /(<(?:(?!<).)*>)/ # use non-capturing group w/ negative lookahead str.split(tag_delimit).each do |token| if token.start_with? '<' full_str << token # don't process tags else full_str << yield(token) end end return full_str end |
#ellipsificate(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Straightforward replace
77 78 79 |
# File 'lib/squib/args/typographer.rb', line 77 def ellipsificate(str) str.gsub('...', @ellipsis) end |
#em_dash(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Straightforward replace
87 88 89 |
# File 'lib/squib/args/typographer.rb', line 87 def em_dash(str) str.gsub('---', @em_dash) end |
#en_dash(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Straightforward replace
82 83 84 |
# File 'lib/squib/args/typographer.rb', line 82 def en_dash(str) str.gsub('--', @en_dash) end |
#explicit_replacements(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
23 24 25 26 27 28 29 30 31 |
# File 'lib/squib/args/typographer.rb', line 23 def explicit_replacements(str) [ :left_curly, :right_curly, :apostraphize, :ellipsificate, :em_dash, :en_dash ].each do |sym| str = each_non_tag(str) do |token| self.method(sym).call(token) end end str end |
#left_curly(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Straightforward replace
62 63 64 |
# File 'lib/squib/args/typographer.rb', line 62 def left_curly(str) str.gsub('``', @ldquote) end |
#left_double_quote(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Quote next to non-whitespace curls
97 98 99 |
# File 'lib/squib/args/typographer.rb', line 97 def left_double_quote(str) str.gsub(/(\")(\S)/, @ldquote + '\2') end |
#left_single_quote(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Quote next to non-whitespace curls
113 114 115 |
# File 'lib/squib/args/typographer.rb', line 113 def left_single_quote(str) str.gsub(/(\')(\S)/, @lsquote + '\2') end |
#process(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
17 18 19 20 21 |
# File 'lib/squib/args/typographer.rb', line 17 def process(str) str = explicit_replacements(str.to_s) str = smart_quotes(str) if @smart_quotes str end |
#right_curly(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Straightforward replace
67 68 69 |
# File 'lib/squib/args/typographer.rb', line 67 def right_curly(str) str.gsub(%{''}, @rdquote) end |
#right_double_quote(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Quote next to non-whitespace curls
92 93 94 |
# File 'lib/squib/args/typographer.rb', line 92 def right_double_quote(str) str.gsub(/(\S)(\")/, '\1' + @rdquote) end |
#right_single_quote(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Quote next to non-whitespace curls
108 109 110 |
# File 'lib/squib/args/typographer.rb', line 108 def right_single_quote(str) str.gsub(/(\S)(\')/, '\1' + @rsquote) end |
#single_inside_double_quote(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Handle the cases where a double quote is next to a single quote
102 103 104 105 |
# File 'lib/squib/args/typographer.rb', line 102 def single_inside_double_quote(str) str.gsub(/(\")(\')(\S)/, @ldquote + @lsquote + '\3') .gsub(/(\")(\')(\S)/, '\1' + @rsquote + @rdquote) end |
#smart_quotes(str) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/squib/args/typographer.rb', line 33 def smart_quotes(str) [ :single_inside_double_quote, :right_double_quote, :left_double_quote, :right_single_quote, :left_single_quote].each do |sym| str = each_non_tag(str) do |token| self.method(sym).call(token) end end str end |