Class: ActiveSupport::SafeBuffer
  
  
  
  
  
    - Inherits:
 
    - 
      String
      
        
        show all
      
    
 
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/active_support/core_ext/string/output_safety.rb
 
  
  
 
Defined Under Namespace
  
    
  
    
      Classes: SafeConcatError
    
  
  
    
      Constant Summary
      collapse
    
    
      
        - UNSAFE_STRING_METHODS =
          
        
 
        %w(
  capitalize chomp chop delete delete_prefix delete_suffix
  downcase lstrip next reverse rstrip scrub squeeze strip
  succ swapcase tr tr_s unicode_normalize upcase
)
 
      
        - UNSAFE_STRING_METHODS_WITH_BACKREF =
          
        
 
        %w(gsub sub)
 
      
    
  
  
  
  Constants inherited
     from String
  String::BLANK_RE, String::ENCODED_BLANKS
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods inherited from String
  #acts_like_string?, #at, #blank?, #camelize, #classify, #constantize, #dasherize, #deconstantize, #demodulize, #downcase_first, #exclude?, #first, #foreign_key, #from, #html_safe, #humanize, #in_time_zone, #indent, #indent!, #inquiry, #is_utf8?, #last, #mb_chars, #parameterize, #pluralize, #present?, #remove, #remove!, #safe_constantize, #singularize, #squish, #squish!, #strip_heredoc, #tableize, #titleize, #to, #to_date, #to_datetime, #to_time, #truncate, #truncate_bytes, #truncate_words, #underscore, #upcase_first
  Constructor Details
  
    
  
  
    #initialize(_str = "")  ⇒ SafeBuffer 
  
  
  
  
    
Returns a new instance of SafeBuffer.
   
 
  
  
    
      
70
71
72 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 70
def initialize(_str = "")
  super
end 
     | 
  
 
  
 
  
    Instance Method Details
    
      
  
  
    
      
124
125
126
127
128
129
130
131
132
133 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 124
def %(args)
  case args
  when Hash
    escaped_args = args.transform_values { |arg| explicit_html_escape_interpolated_argument(arg) }
  else
    escaped_args = Array(args).map { |arg| explicit_html_escape_interpolated_argument(arg) }
  end
  self.class.new(super(escaped_args))
end
     | 
  
 
    
      
  
  
    
      
115
116
117
118
119
120
121
122 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 115
def *(_)
  new_string = super
  new_safe_buffer = new_string.is_a?(SafeBuffer) ? new_string : SafeBuffer.new(new_string)
  if @html_unsafe
    new_safe_buffer.instance_variable_set(:@html_unsafe, true)
  end
  new_safe_buffer
end
     | 
  
 
    
      
  
  
    
      
111
112
113 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 111
def +(other)
  dup.concat(other)
end 
     | 
  
 
    
      
  
  
    #[](*args)  ⇒ Object 
  
  
    Also known as:
    slice
    
  
  
  
    
      
38
39
40
41
42
43
44
45
46
47
48 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 38
def [](*args)
  if html_safe?
    new_string = super
    return unless new_string
    string_into_safe_buffer(new_string, true)
  else
    to_str[*args]
  end
end
     | 
  
 
    
      
  
  
    #[]=(arg1, arg2, arg3 = nil)  ⇒ Object 
  
  
  
  
    
      
103
104
105
106
107
108
109 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 103
def []=(arg1, arg2, arg3 = nil)
  if arg3
    super(arg1, arg2, implicit_html_escape_interpolated_argument(arg3))
  else
    super(arg1, implicit_html_escape_interpolated_argument(arg2))
  end
end
     | 
  
 
    
      
  
  
    
      
143
144
145 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 143
def as_json(*)
  to_str
end 
     | 
  
 
    
      
  
  
    #bytesplice(*args, value)  ⇒ Object 
  
  
  
  
    
      
87
88
89 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 87
def bytesplice(*args, value)
  super(*args, implicit_html_escape_interpolated_argument(value))
end 
     | 
  
 
    
      
  
  
    
      
59
60
61
62
63 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 59
def chr
  return super unless html_safe?
  string_into_safe_buffer(super, true)
end 
     | 
  
 
    
      
  
  
    #concat(value)  ⇒ Object 
  
  
    Also known as:
    <<
    
  
  
  
    
      
79
80
81
82
83
84 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 79
def concat(value)
  unless value.nil?
    super(implicit_html_escape_interpolated_argument(value))
  end
  self
end
     | 
  
 
    
      
  
  
    #encode_with(coder)  ⇒ Object 
  
  
  
  
    
      
151
152
153 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 151
def encode_with(coder)
  coder.represent_object nil, to_str
end 
     | 
  
 
    
      
  
  
    #html_safe?  ⇒ Boolean 
  
  
  
  
    
      
135
136
137 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 135
def html_safe?
  @html_unsafe.nil?
end 
     | 
  
 
    
      
  
  
    #initialize_copy(other)  ⇒ Object 
  
  
  
  
    
      
74
75
76
77 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 74
def initialize_copy(other)
  super
  @html_unsafe = true unless other.html_safe?
end 
     | 
  
 
    
      
  
  
    #insert(index, value)  ⇒ Object 
  
  
  
  
    
      
91
92
93 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 91
def insert(index, value)
  super(index, implicit_html_escape_interpolated_argument(value))
end 
     | 
  
 
    
      
  
  
    #prepend(value)  ⇒ Object 
  
  
  
  
    
      
95
96
97 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 95
def prepend(value)
  super(implicit_html_escape_interpolated_argument(value))
end 
     | 
  
 
    
      
  
  
    #replace(value)  ⇒ Object 
  
  
  
  
    
      
99
100
101 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 99
def replace(value)
  super(implicit_html_escape_interpolated_argument(value))
end 
     | 
  
 
    
      
  
  
    #safe_concat(value)  ⇒ Object 
  
  
  
  
    
      
65
66
67
68 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 65
def safe_concat(value)
  raise SafeConcatError unless html_safe?
  original_concat(value)
end 
     | 
  
 
    
      
  
  
    #slice!(*args)  ⇒ Object 
  
  
  
  
    
      
51
52
53
54
55
56
57 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 51
def slice!(*args)
  new_string = super
  return new_string if !html_safe? || new_string.nil?
  string_into_safe_buffer(new_string, true)
end 
     | 
  
 
    
      
  
  
    
      
147
148
149 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 147
def to_param
  to_str
end 
     | 
  
 
    
      
  
  
    
      
139
140
141 
     | 
    
      # File 'lib/active_support/core_ext/string/output_safety.rb', line 139
def to_s
  self
end 
     |