@@ -93,30 +93,42 @@ func (p *Parser) handleTag(name string) bool {
9393 if strings .HasPrefix (name , "/" ) {
9494 name = name [1 :]
9595 if _ , isFg := fgTags [name ]; isFg {
96- p .writer .Write ([]byte (p .state .setFg (resetFg )))
96+ if ! disableFormatting {
97+ p .writer .Write ([]byte (p .state .setFg (resetFg )))
98+ }
9799 return true
98100 } else if _ , isBg := bgTags [name ]; isBg {
99- p .writer .Write ([]byte (p .state .setBg (resetBg )))
101+ if ! disableFormatting {
102+ p .writer .Write ([]byte (p .state .setBg (resetBg )))
103+ }
100104 return true
101105 } else if attr , isAttr := attrTags [name ]; isAttr {
102- p .writer .Write ([]byte (p .state .setAttr (- int8 (attr ))))
106+ if ! disableFormatting {
107+ p .writer .Write ([]byte (p .state .setAttr (- int8 (attr ))))
108+ }
103109 return true
104110 }
105111 return false
106112 }
107113
108114 if esc , ok := fgTags [name ]; ok {
109- p .writer .Write ([]byte (p .state .setFg (esc )))
115+ if ! disableFormatting {
116+ p .writer .Write ([]byte (p .state .setFg (esc )))
117+ }
110118 return true
111119 }
112120
113121 if esc , ok := bgTags [name ]; ok {
114- p .writer .Write ([]byte (p .state .setBg (esc )))
122+ if ! disableFormatting {
123+ p .writer .Write ([]byte (p .state .setBg (esc )))
124+ }
115125 return true
116126 }
117127
118128 if attr , ok := attrTags [name ]; ok {
119- p .writer .Write ([]byte (p .state .setAttr (int8 (attr ))))
129+ if ! disableFormatting {
130+ p .writer .Write ([]byte (p .state .setAttr (int8 (attr ))))
131+ }
120132 return true
121133 }
122134
@@ -126,9 +138,12 @@ func (p *Parser) handleTag(name string) bool {
126138// Parse takes input from the reader and converts any provided tags to the relevant ANSI escape codes for output to parser's writer.
127139func (p * Parser ) Parse (reader io.Reader ) error {
128140
141+ formattingLock .RLock ()
142+ defer formattingLock .RUnlock ()
143+
129144 buffer := make ([]byte , 1024 )
130145
131- if p .IncludeLeadingResets {
146+ if p .IncludeLeadingResets && ! disableFormatting {
132147 if _ , err := p .writer .Write ([]byte (resetAll )); err != nil {
133148 return err
134149 }
@@ -169,7 +184,7 @@ func (p *Parser) Parse(reader io.Reader) error {
169184 }
170185 }
171186
172- if p .IncludeTrailingResets {
187+ if p .IncludeTrailingResets && ! disableFormatting {
173188 p .writer .Write ([]byte (resetAll ))
174189 }
175190
0 commit comments