Description
Locate an unquoted whitespace-introduced dotenv comment in one balanced single/double-quoted line; literal hash inside quotes is not a comment.
Environment assignments pair names with literal string values. Repeated names need an explicit first/last policy, and missing values differ from present empty strings. A dotenv file and a shell program can use different quoting and expansion rules; these tools implement their stated literal subsets using supplied data.
Locate an unquoted whitespace-introduced dotenv comment in one balanced single/double-quoted line; literal hash inside quotes is not a comment.
When to use this tool
Use this tool to locate an unquoted whitespace-introduced dotenv comment in one balanced single/double-quoted line; literal hash inside quotes is not a comment.
How to use the tool and how it works
- Enter line using the input definitions below.
- Run the operation. Resolve malformed-input errors before interpreting the result.
- Read result.commentSpan. Interpret signs, units, ordering and null values using the rules below.
Scan one line while tracking single/double quotes. Double-quoted backslash escapes skip the following character. The first unquoted hash at the start or after space/tab begins a comment; return [start,lineLength] or null. Reject unterminated quotes or dangling double-quoted escapes.1
| Input field | Meaning and units | Accepted input |
|---|---|---|
| line | One literal dotenv-subset line, without CR or LF. | Text, at most 8,192 UTF-16 code units; the stated grammar and narrower limits also apply. |
| Output field | Interpretation |
|---|---|
| result | Object containing the fields below. |
| result.commentSpan | Half-open UTF-16 [start,end] comment interval, or null. |
{
"input": {
"line": "A=\"x#y\" # note"
},
"output": {
"result": {
"commentSpan": [
8,
14
]
}
}
} Limitations and assumptions
- Spans refer to UTF-16 positions in the original line, and comment detection alone does not validate an assignment.
- Portable assignment records require names matching [A-Za-z_][A-Za-z0-9_]* and NUL-free values. Name matching is case-sensitive. Reference scanners and quoted-value helpers follow only their own stated grammar and do not read the process environment.
- Every declared top-level input is required and unknown fields are rejected. Ordinary strings are limited to 8,192 UTF-16 code units and lists to 128 entries, with tighter operation-specific bounds where stated. JSON text has bounded nesting and node counts.
- Numeric outputs must be finite and within the absolute safe-integer magnitude; exact larger integers use decimal text. Source positions are zero-based UTF-16 offsets and span ends are exclusive unless a different convention is explicitly stated.
Alternative or Complementary methods
Select the consuming application’s dotenv dialect explicitly. Keep literal substitution separate from recursive expansion and shell execution, and retain occurrence provenance when resolving duplicate assignments.
References
Similar or alternative tools
- Restricted Dotenv Assignment Line Formatter
Format one portable environment assignment using the documented literal JSON-double dotenv subset; never expands dollar references or emits a shell command.
- Restricted Dotenv Double Quoted Value Parser
Parse the explicitly JSON-double-quoted dotenv subset only, with JSON escapes and literal dollar signs; not shell interpolation or every dotenv implementation.