JSON এবং HTML Template Handling

Web Development with Haskell (ওয়েব ডেভেলপমেন্ট) - হ্যাস্কেল (Haskell) - Computer Programming

282

Haskell এ JSON এবং HTML Template Handling

Haskell এ JSON এবং HTML Template Handling কাজ করার জন্য বেশ কিছু শক্তিশালী লাইব্রেরি এবং কৌশল রয়েছে, যা web applications এবং data serialization এর কাজগুলো সহজ করে তোলে। Haskell এ JSON পার্সিং এবং HTML টেমপ্লেটিং এ কাজ করতে আমরা বিভিন্ন জনপ্রিয় লাইব্রেরি যেমন aeson এবং mustache ব্যবহার করতে পারি।

এখানে JSON এবং HTML Template Handling এর জন্য Haskell এর জনপ্রিয় লাইব্রেরি এবং তাদের ব্যবহার নিয়ে আলোচনা করা হবে।


১. JSON Handling in Haskell

Haskell এ JSON এর সাথে কাজ করতে aeson লাইব্রেরি অন্যতম জনপ্রিয় এবং শক্তিশালী। এটি JSON ডেটা serialize এবং deserialize (convert) করার জন্য ব্যবহৃত হয়। Haskell এ JSON ডেটা পার্সিং এবং জেনারেট করার জন্য aeson লাইব্রেরিটি সহজ এবং কার্যকরী।

aeson লাইব্রেরি ব্যবহার

aeson লাইব্রেরি JSON ডেটা পার্স করার জন্য অনেক সুবিধা প্রদান করে। এটি FromJSON এবং ToJSON টাইপ ক্লাস ব্যবহার করে JSON অবজেক্টের সাথে Haskell ডেটা টাইপগুলিকে মানানসই করে।

উদাহরণ: JSON পার্সিং এবং জেনারেশন

  1. aeson ইনস্টল করা:
cabal install aeson
  1. Haskell কোড: JSON Serialization এবং Parsing
import Data.Aeson
import Data.ByteString.Lazy.Char8 (pack)
import GHC.Generics

-- Haskell ডেটা টাইপ
data Person = Person { name :: String, age :: Int } deriving (Show, Generic)

-- JSON এর জন্য FromJSON এবং ToJSON ইন্সট্যান্স তৈরি
instance FromJSON Person
instance ToJSON Person

-- JSON স্ট্রিং থেকে Haskell টাইপে পার্সিং
decodePerson :: ByteString -> Maybe Person
decodePerson = decode

-- Haskell টাইপ থেকে JSON স্ট্রিং তৈরি
encodePerson :: Person -> ByteString
encodePerson = encode

main :: IO ()
main = do
    let jsonStr = "{\"name\":\"Alice\",\"age\":30}"
        encodedPerson = encodePerson (Person "Bob" 25)
        
    -- JSON থেকে পার্স করা
    let decodedPerson = decodePerson (pack jsonStr) :: Maybe Person
    print decodedPerson
    
    -- Haskell থেকে JSON এ রূপান্তর
    print encodedPerson

ব্যবহৃত:

Prelude> main
Just (Person {name = "Alice", age = 30})
"{\"name\":\"Bob\",\"age\":25}"

এখানে, decode এবং encode ফাংশনগুলির মাধ্যমে JSON স্ট্রিং এবং Haskell ডেটা টাইপের মধ্যে রূপান্তর করা হয়েছে।


২. HTML Template Handling in Haskell

Haskell এ HTML Template Handling এর জন্য বিভিন্ন লাইব্রেরি রয়েছে। এর মধ্যে mustache এবং hakyll হলো জনপ্রিয়। Mustache লাইব্রেরি একটি সিম্পল টেমপ্লেট ইঞ্জিন যা HTML টেমপ্লেটিংকে অত্যন্ত সহজ করে তোলে।

mustache লাইব্রেরি ব্যবহার

  1. mustache ইনস্টল করা:
cabal install mustache
  1. Haskell কোড: HTML টেমপ্লেটিং
import Text.Mustache
import qualified Data.Text.Lazy as T
import qualified Data.HashMap.Strict as M

-- HTML টেমপ্লেট তৈরির উদাহরণ
templateExample :: IO ()
templateExample = do
    let templateStr = "Hello, {{name}}! You are {{age}} years old."
        tmpl = compileTemplate $ T.pack templateStr
        context = M.fromList [("name", "Alice"), ("age", "30")]
    case tmpl of
        Left err -> putStrLn $ "Error compiling template: " ++ show err
        Right compiledTemplate -> do
            let rendered = renderMustache compiledTemplate (Object context)
            putStrLn $ T.unpack rendered

এখানে, mustache লাইব্রেরির compileTemplate ফাংশনটি একটি HTML টেমপ্লেট কম্পাইল করে, এবং renderMustache ফাংশনটি টেমপ্লেটের ভিতরে ডেটা ইনজেক্ট করে।

ব্যবহৃত:

Hello, Alice! You are 30 years old.

এখানে, name এবং age পরিবর্তনশীলগুলো mustache টেমপ্লেটের মধ্যে ব্যবহৃত হয়েছে, এবং সেই অনুযায়ী HTML আউটপুট তৈরি হয়েছে।


৩. HTML Template with Hakyll

Hakyll একটি স্ট্যাটিক সাইট জেনারেটর যা template rendering এবং content generation এর জন্য ব্যবহৃত হয়। এটি HTML টেমপ্লেটিং এবং সাইটের জন্য কনটেন্ট জেনারেট করার জন্য বেশ কার্যকরী।

  1. hakyll ইনস্টল করা:
cabal install hakyll
  1. Haskell কোড: Hakyll HTML টেমপ্লেটিং
import Hakyll

main :: IO ()
main = hakyll $ do
    match "templates/*" $ compile templateBody
    match "about.md" $ do
        route   $ setExtension "html"
        compile $ do
            pandocCompiler
            >>= loadAndApplyTemplate "templates/default.html" defaultContext
            >>= relativizeUrls

    create ["index.html"] $ do
        route idRoute
        compile $ do
            let ctx = field "title" (const $ return "Welcome to Hakyll!")
            makeItem ""
                >>= loadAndApplyTemplate "templates/default.html" ctx
                >>= relativizeUrls

এখানে, hakyll ব্যবহার করে একটি HTML সাইটের জন্য টেমপ্লেট এবং কনটেন্ট জেনারেট করা হয়েছে।


উপসংহার

Haskell এ JSON এবং HTML Template Handling সিস্টেম তৈরি করার জন্য বেশ কিছু শক্তিশালী এবং কার্যকরী লাইব্রেরি রয়েছে। aeson এর মাধ্যমে JSON ডেটা পার্সিং এবং mustache বা hakyll ব্যবহার করে HTML টেমপ্লেটিং করা যায়। Haskell এর এই লাইব্রেরিগুলি ফাংশনাল প্রোগ্রামিংয়ে data serialization এবং dynamic content rendering এর কাজগুলো সহজ এবং আরও কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...