Long literals, with continuations: Difference between revisions

m
→‎{{header|Wren}}: Changed to use a 'raw' string.
m (→‎{{header|Wren}}: Changed to use a 'raw' string.)
 
(8 intermediate revisions by one other user not shown)
Line 524:
</pre>
 
=={{header|C++}}==
<syntaxhighlight lang="c++">
#include <chrono>
#include <format>
#include <iostream>
#include <regex>
#include <sstream>
#include <string>
 
const std::string ELEMENTS = R"(
hydrogen helium lithium beryllium
boron carbon nitrogen oxygen
fluorine neon sodium magnesium
aluminum silicon phosphorous sulfur
chlorine argon potassium calcium
scandium titanium vanadium chromium
manganese iron cobalt nickel
copper zinc gallium germanium
arsenic selenium bromine krypton
rubidium strontium yttrium zirconium
niobium molybdenum technetium ruthenium
rhodium palladium silver cadmium
indium tin antimony tellurium
iodine xenon cesium barium
lanthanum cerium praseodymium neodymium
promethium samarium europium gadolinium
terbium dysprosium holmium erbium
thulium ytterbium lutetium hafnium
tantalum tungsten rhenium osmium
iridium platinum gold mercury
thallium lead bismuth polonium
astatine radon francium radium
actinium thorium protactinium uranium
neptunium plutonium americium curium
berkelium californium einsteinium fermium
mendelevium nobelium lawrencium rutherfordium
dubnium seaborgium bohrium hassium
meitnerium darmstadtium roentgenium copernicium
nihonium flerovium moscovium livermorium
tennessine oganesson
)";
 
const std::string UNNAMED_ELEMENTS = R"(
ununennium unquadnilium triunhexium penthextrium
penthexpentium septhexunium octenntrium ennennbium
)";
 
std::vector<std::string> rawstring_to_vector(const std::string& text, const char& delimiter) {
std::regex regx("\\s+");
std::string delimit(1, delimiter);
std::string elements = std::regex_replace(text, regx, delimit);
elements = elements.substr(1, elements.size() - 2);
 
std::vector<std::string> result;
std::stringstream stream(elements);
std::string item;
while ( getline(stream, item, delimiter) ) {
result.push_back (item);
}
return result;
}
 
int main() {
std::vector<std::string> elements = rawstring_to_vector(ELEMENTS, ' ');
std::vector<std::string> unnamed = rawstring_to_vector(UNNAMED_ELEMENTS, ' ');
 
elements.erase(std::remove_if(elements.begin(), elements.end(),
[unnamed](std::string text){ return std::find(unnamed.begin(), unnamed.end(), text) != unnamed.end(); }),
elements.end());
 
const std::string zone = "Asia/Shanghai";
const std::chrono::zoned_time zoned_time { zone, std::chrono::system_clock::now() };
 
std::cout << "Last revision Date: " << std::format("{:%Y-%m-%d Time %H:%M}", zoned_time)
<< " " << zone << std::endl;
std::cout << "Number of elements: " << elements.size() << std::endl;
std::cout << "Last element : " << elements[elements.size() - 1] << std::endl;
}
</syntaxhighlight>
{{ out }}
<pre>
Last revision Date: 2023-08-04 Time 00:18 Asia/Shanghai
Number of elements: 118
Last element : oganesson
</pre>
 
=={{header|Crystal}}==
Line 929 ⟶ 1,014:
│hydrogen helium lithium beryll│vermorium tennessine oganesson│
└──────────────────────────────┴──────────────────────────────┘</pre>
 
=={{header|Java}}==
<syntaxhighlight lang="java">
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
 
public final class LongLiteralsWithContinuations {
 
public static void main(String[] aArgs) {
ZoneId zoneID = ZoneId.of("Asia/Shanghai");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneID);
String dateTime = zonedDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a"));
List<String> elements = splitToList(ELEMENTS).stream().
filter( s -> ! splitToList(UNNAMED_ELEMENTS).contains(s) ).toList();
System.out.println("Last revision Date: " + dateTime + " " + zoneID);
System.out.println("Number of elements: " + elements.size());
System.out.println("Last element : " + elements.get(elements.size() - 1));
}
private static List<String> splitToList(String aText) {
String excessWhiteSpaceRemoved = aText.trim().replaceAll("\\s+", " ");
return Arrays.stream(excessWhiteSpaceRemoved.split(" ")).toList();
}
private static final String ELEMENTS = """
hydrogen helium lithium beryllium
boron carbon nitrogen oxygen
fluorine neon sodium magnesium
aluminum silicon phosphorous sulfur
chlorine argon potassium calcium
scandium titanium vanadium chromium
manganese iron cobalt nickel
copper zinc gallium germanium
arsenic selenium bromine krypton
rubidium strontium yttrium zirconium
niobium molybdenum technetium ruthenium
rhodium palladium silver cadmium
indium tin antimony tellurium
iodine xenon cesium barium
lanthanum cerium praseodymium neodymium
promethium samarium europium gadolinium
terbium dysprosium holmium erbium
thulium ytterbium lutetium hafnium
tantalum tungsten rhenium osmium
iridium platinum gold mercury
thallium lead bismuth polonium
astatine radon francium radium
actinium thorium protactinium uranium
neptunium plutonium americium curium
berkelium californium einsteinium fermium
mendelevium nobelium lawrencium rutherfordium
dubnium seaborgium bohrium hassium
meitnerium darmstadtium roentgenium copernicium
nihonium flerovium moscovium livermorium
tennessine oganesson
""";
private static final String UNNAMED_ELEMENTS = """
ununennium unquadnilium triunhexium penthextrium
penthexpentium septhexunium octenntrium ennennbium
""";
}
</syntaxhighlight>
{{ out }}
<pre>
Last revision Date: 2023-08-03 19:19:48 pm Asia/Shanghai
Number of elements: 118
Last element : oganesson
</pre>
 
=={{header|jq}}==
Line 1,876 ⟶ 2,036:
=={{header|Wren}}==
{{libheader|Wren-pattern}}
We use a 'raw' string for this task.
Wren doesn't have raw strings nor continuations and so we concatenate rows of strings instead.
<syntaxhighlight lang="wren">import "./pattern" for Pattern
 
The rows can begin in any column though, for a tidy display, we begin them all here in column 5.
<syntaxhighlight lang="ecmascript">import "/pattern" for Pattern
 
var elementStr =
"""hydrogen helium lithium beryllium boron carbon " +
"nitrogen oxygen fluorine neon sodium magnesium " +
"aluminum silicon phosphorous sulfur chlorine argon " +
"potassium calcium scandium titanium vanadium chromium " +
"manganese iron cobalt nickel copper zinc " +
"gallium germanium arsenic selenium bromine krypton " +
"rubidium strontium yttrium zirconium niobium molybdenum " +
"technetium ruthenium rhodium palladium silver cadmium " +
"indium tin antimony tellurium iodine xenon " +
"cesium barium lanthanum cerium praseodymium neodymium " +
"promethium samarium europium gadolinium terbium dysprosium " +
"holmium erbium thulium ytterbium lutetium hafnium " +
"tantalum tungsten rhenium osmium iridium platinum " +
"gold mercury thallium lead bismuth polonium " +
"astatine radon francium radium actinium thorium " +
"protactinium uranium neptunium plutonium americium curium " +
"berkelium californium einsteinium fermium mendelevium nobelium " +
"lawrencium rutherfordium dubnium seaborgium bohrium hassium " +
"meitnerium darmstadtium roentgenium copernicium nihonium flerovium " +
"moscovium livermorium tennessine oganesson"""
 
var p = Pattern.new("+1/s") // matches 1 or more whitespace characters
var elements = p.splitAll(elementStr) // get a list of elements
elementStr = elements.join(" ") // recombine using a single space as separator
var lastUpdate = "20202023-0812-0317"
System.print("Last updated : %(lastUpdate)")
System.print("Number of elements : %(elements.count)")
Line 1,913 ⟶ 2,071:
{{out}}
<pre>
Last updated : 20202023-0812-0317
Number of elements : 118
Last element : oganesson
9,482

edits