pascalabcnet/ReleaseGenerators/PT4/Lib/PT4LinqXml[PascalABC].txt

185 lines
5.9 KiB
Plaintext
Raw Permalink Normal View History

2015-08-02 22:37:43 +03:00
[10]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml10: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.227)
begin
Task('LinqXml10');
var a := ReadAllLines(ReadString);
var d := new XDocument(
new XDeclaration(nil, 'windows-1251', nil),
new XElement('root',
a.Select(e -> e.StartsWith('data:') ?
new XProcessingInstruction('instr', e.Substring(5)) as XNode:
new XElement('line', e) as XNode)));
d.Save(ReadString);
end.
[20]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml20: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.235-236)
begin
Task('LinqXml20');
var d := XDocument.Load(ReadString);
foreach var e1 in d.Root.Elements do
begin
write(e1.Name.LocalName);
var max := e1.Descendants
.Select(e -> e.Attributes.Count())
.DefaultIfEmpty(-1).Max;
write(max);
var a := e1.Descendants
.Where(e -> e.Attributes.Count() = max)
.Select(e -> e.Name.LocalName)
.OrderBy(e -> e)
.DefaultIfEmpty('no child');
foreach var e in a do
write(e);
end
end.
[28]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml28: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.238)
begin
Task('LinqXml28');
var name := ReadString;
var d := XDocument.Load(name);
d.Root.Elements().Elements().Elements()
.Nodes().OfType&<XText>().Remove();
d.Save(name);
end.
[32]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml32: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.242)
begin
Task('LinqXml32');
var name := ReadString;
var s1 := ReadString;
var s2 := ReadString;
var d := XDocument.Load(name);
foreach var e in d.Root.Elements().Elements(s1) do
e.AddBeforeSelf(new XElement(s2,
e.LastAttribute, e.Elements().FirstOrDefault()));
d.Save(name);
end.
[37]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml37: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.244)
begin
Task('LinqXml37');
var name := ReadString;
var d := XDocument.Load(name);
var a := d.Root.Elements().Elements()
.Where(e -> not e.IsEmpty);
foreach var e in a do
e.Value := e.Value;
d.Save(name);
end.
[50]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml50: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.254)
begin
Task('LinqXml50');
var name := ReadString;
var d := XDocument.Load(name);
d.Root.AddFirst(new XElement('total-time',
d.Root.Elements()
.Select(e ->
begin
var a := e.Attribute('time');
if a = nil then
result := new TimeSpan(24, 0, 0)
else
result := TimeSpan(a);
end)
.Aggregate(TimeSpan.Zero, (a, e) -> a + e)));
d.Save(name);
end.
[57]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml57: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.263)
begin
Task('LinqXml57');
var name := ReadString;
var s1 := ReadString;
var s2 := ReadString;
var d := XDocument.Load(name);
d.Root.Add(new XAttribute(XNamespace.Xmlns + 'x', s1),
new XAttribute(XNamespace.Xmlns + 'y', s2));
var ns1 := XNamespace(s1);
var ns2 := XNamespace(s2);
foreach var e in d.Descendants() do
begin
var ns := e.Ancestors().Count() <= 1 ? ns1 : ns2;
e.Name := ns + e.Name.LocalName;
end;
d.Descendants().Attributes('xmlns').Remove();
d.Save(name);
end.
[61]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.6. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml61: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.268, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
begin
Task('LinqXml61');
var name := ReadString;
var d := XDocument.Load(name);
var ns := d.Root.Name.Namespace;
d.Root.ReplaceNodes(d.Root.Elements()
.Select(e -> new XElement(ns + 'time',
new XAttribute('id', e.Element(ns + 'id').Value),
new XAttribute('year',
(DateTime(e.Element(ns + 'date'))).Year),
new XAttribute('month',
(DateTime(e.Element(ns + 'date'))).Month),
e.Element(ns + 'time').Value)));
d.Save(name);
end.
[82]
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LINQ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.: <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, 2014.
// <20><><EFBFBD><EFBFBD><EFBFBD> 7. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinqXml
// 7.6. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// LinqXml82: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>.276)
begin
Task('LinqXml82');
var name := ReadString;
var d := XDocument.Load(name);
var ns := d.Root.Name.Namespace;
var a := d.Root.Elements()
.Select(e ->
begin
var s := e.Name.LocalName.Substring(4).Split('-');
result := new class
(
house := StrToInt(s[0]),
floor := (StrToInt(s[1]) - 1) mod 36 div 4 + 1,
debt := double(e)
);
end);
var floors := Range(1, 9);
d.Root.ReplaceNodes(a.OrderBy(e -> e.house)
.GroupBy(e -> e.house,
(k, ee) -> new XElement(ns + ('house' + k),
floors.GroupJoin(ee, e1 -> e1, e2 -> e2.floor,
(e1, ee2) -> new XElement(ns + ('floor' + e1),
new XAttribute('count', ee2.Count()),
new XAttribute('total-debt',
Math.Round(ee2.Sum(e -> e.debt), 2)))))));
d.Save(name);
end.