Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F162741
xml_builder.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
xml_builder.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.XmlBuilder
do
def
to_xml
({
tag
,
attributes
,
content
})
do
open_tag
=
make_open_tag
(
tag
,
attributes
)
content_xml
=
to_xml
(
content
)
"<
#{
open_tag
}
>
#{
content_xml
}
</
#{
tag
}
>"
end
def
to_xml
({
tag
,
%{}
=
attributes
})
do
open_tag
=
make_open_tag
(
tag
,
attributes
)
"<
#{
open_tag
}
/>"
end
def
to_xml
({
tag
,
content
}),
do
:
to_xml
({
tag
,
%{},
content
})
def
to_xml
(
content
)
when
is_binary
(
content
)
do
to_string
(
content
)
end
def
to_xml
(
content
)
when
is_list
(
content
)
do
for
element
<-
content
do
to_xml
(
element
)
end
|>
Enum
.
join
()
end
def
to_xml
(%
NaiveDateTime
{}
=
time
)
do
NaiveDateTime
.
to_iso8601
(
time
)
end
def
to_doc
(
content
),
do
:
~s(<?xml version="1.0" encoding="UTF-8"?>)
<>
to_xml
(
content
)
defp
make_open_tag
(
tag
,
attributes
)
do
attributes_string
=
for
{
attribute
,
value
}
<-
attributes
do
value
=
String
.
replace
(
value
,
"\""
,
"""
)
"
#{
attribute
}
=\"
#{
value
}
\""
end
|>
Enum
.
join
(
" "
)
[
tag
,
attributes_string
]
|>
Enum
.
join
(
" "
)
|>
String
.
trim
()
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Fri, Feb 21, 5:48 PM (13 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
66818
Default Alt Text
xml_builder.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment