Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(xml_tag), | intent(in) | :: | self | XML tag. |
||
logical, | intent(in), | optional | :: | is_indented | Activate content indentation. |
|
logical, | intent(in), | optional | :: | is_content_indented | Activate content indentation. |
|
logical, | intent(in), | optional | :: | only_start | Write only start tag. |
|
logical, | intent(in), | optional | :: | only_content | Write only content. |
|
logical, | intent(in), | optional | :: | only_end | Write only end tag. |
Output string containing the whole tag.
Convert the whole tag into a string.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | is_content_indented_ | Activate content indentation. |
|||
logical, | public | :: | only_start_ | Write only start tag. |
|||
logical, | public | :: | only_content_ | Write only content. |
|||
logical, | public | :: | only_end_ | Write only end tag. |
pure function stringify(self, is_indented, is_content_indented, only_start, only_content, only_end) result(stringed)
!---------------------------------------------------------------------------------------------------------------------------------
!< Convert the whole tag into a string.
!---------------------------------------------------------------------------------------------------------------------------------
class(xml_tag), intent(in) :: self !< XML tag.
logical, intent(in), optional :: is_indented !< Activate content indentation.
logical, intent(in), optional :: is_content_indented !< Activate content indentation.
logical, intent(in), optional :: only_start !< Write only start tag.
logical, intent(in), optional :: only_content !< Write only content.
logical, intent(in), optional :: only_end !< Write only end tag.
character(len=:), allocatable :: stringed !< Output string containing the whole tag.
logical :: is_content_indented_ !< Activate content indentation.
logical :: only_start_ !< Write only start tag.
logical :: only_content_ !< Write only content.
logical :: only_end_ !< Write only end tag.
!---------------------------------------------------------------------------------------------------------------------------------
!---------------------------------------------------------------------------------------------------------------------------------
is_content_indented_ = .false. ; if (present(is_content_indented)) is_content_indented_ = is_content_indented
only_start_ = .false. ; if (present(only_start)) only_start_ = only_start
only_content_ = .false. ; if (present(only_content)) only_content_ = only_content
only_end_ = .false. ; if (present(only_end)) only_end_ = only_end
if (only_start_) then
stringed = self%start_tag(is_indented=is_indented)
elseif (only_content_) then
if (self%tag_content%is_allocated()) then
if (is_content_indented_) then
stringed = repeat(' ', self%indent+2)//self%tag_content
else
stringed = self%tag_content%chars()
endif
endif
elseif (only_end_) then
stringed = self%end_tag(is_indented=is_indented)
else
stringed = ''
if (self%tag_name%is_allocated()) then
if (self%is_self_closing) then
stringed = self%self_closing_tag(is_indented=is_indented)
else
stringed = self%start_tag(is_indented=is_indented)
if (self%tag_content%is_allocated()) then
if (is_content_indented_) then
stringed = stringed//new_line('a')//repeat(' ', self%indent+2)//&
self%tag_content//new_line('a')//repeat(' ', self%indent)
else
stringed = stringed//self%tag_content
endif
endif
stringed = stringed//self%end_tag()
endif
endif
endif
!---------------------------------------------------------------------------------------------------------------------------------
endfunction stringify