Giter Site home page Giter Site logo

update dom elements about floki HOT 4 CLOSED

philss avatar philss commented on May 4, 2024
update dom elements

from floki.

Comments (4)

philss avatar philss commented on May 4, 2024 2

@brweber2 Thanks for the proposal.

Yes, this is possible. I think for this feature we need something more flexible, like a "protocol" for saying that we want to "add" attributes, or change the tag name (type), or "push" a new child into the tree.

Something like:

Floki.transform(html_tree, "span", fn element -> {:add_child, "a text"} end)
# or
Floki.transform(html_tree, "span", fn element -> {:replace_type, "div"} end)
# or
Floki.transform(html_tree, "span", fn element -> {:add_attribute, {"class", "farawell"}} end)

What do you think?

from floki.

philss avatar philss commented on May 4, 2024

@cj do you mean transform the HTML and returning the modified version as string?
If so, this version can't do that. But it's an interesting idea.

Can you show an example of usage?

from floki.

brweber2 avatar brweber2 commented on May 4, 2024
    html = """
        <div>
            <span>hello</span>
        </div>
    """
    Floki.parse(html)
    |> Floki.transform("span", fn element -> {"div", [], ["goodbye"]} end )
    #
    # <div>
    #     <div>goodbye</div>
    # </div>
    # 

Rather than just find the elements that match and return them as a list, it would use the original parsed HTML data structure as the accumulator and apply the callback function to replace each match.
The implementation would be very similar to find only it would have an additional argument (the callback function) and the accumulator would be the entire HTML document and not just the list of matches.
Is something like this possible today?

from floki.

philss avatar philss commented on May 4, 2024

Since there was not much discussion here I'm closing this issue.
Please open another issue to keep the discussion if needed. Thanks!

from floki.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.