OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "tools/gn/escape.h" | 5 #include "tools/gn/escape.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/containers/stack_container.h" | 9 #include "base/containers/stack_container.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, | 21 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, |
22 // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? | 22 // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? |
23 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, | 23 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, |
24 // @ A B C D E F G H I J K L M N O | 24 // @ A B C D E F G H I J K L M N O |
25 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 25 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
26 // P Q R S T U V W X Y Z [ \ ] ^ _ | 26 // P Q R S T U V W X Y Z [ \ ] ^ _ |
27 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, | 27 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, |
28 // ` a b c d e f g h i j k l m n o | 28 // ` a b c d e f g h i j k l m n o |
29 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 29 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
30 // p q r s t u v w x y z { | } ~ | 30 // p q r s t u v w x y z { | } ~ |
31 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0 }; | 31 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; |
32 | 32 |
33 // Append one character to the given string, escaping it for Ninja. | 33 // Append one character to the given string, escaping it for Ninja. |
34 // | 34 // |
35 // Ninja's escaping rules are very simple. We always escape colons even | 35 // Ninja's escaping rules are very simple. We always escape colons even |
36 // though they're OK in many places, in case the resulting string is used on | 36 // though they're OK in many places, in case the resulting string is used on |
37 // the left-hand-side of a rule. | 37 // the left-hand-side of a rule. |
38 template<typename DestString> | 38 template<typename DestString> |
39 inline void NinjaEscapeChar(char ch, DestString* dest) { | 39 inline void NinjaEscapeChar(char ch, DestString* dest) { |
40 if (ch == '$' || ch == ' ' || ch == ':') | 40 if (ch == '$' || ch == ' ' || ch == ':') |
41 dest->push_back('$'); | 41 dest->push_back('$'); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 } | 200 } |
201 | 201 |
202 void EscapeStringToStream(std::ostream& out, | 202 void EscapeStringToStream(std::ostream& out, |
203 const base::StringPiece& str, | 203 const base::StringPiece& str, |
204 const EscapeOptions& options) { | 204 const EscapeOptions& options) { |
205 base::StackString<256> escaped; | 205 base::StackString<256> escaped; |
206 EscapeStringToString(str, options, &escaped.container(), nullptr); | 206 EscapeStringToString(str, options, &escaped.container(), nullptr); |
207 if (!escaped->empty()) | 207 if (!escaped->empty()) |
208 out.write(escaped->data(), escaped->size()); | 208 out.write(escaped->data(), escaped->size()); |
209 } | 209 } |
OLD | NEW |