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 পার্সিং এবং জেনারেশন
- aeson ইনস্টল করা:
cabal install aeson- 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 লাইব্রেরি ব্যবহার
- mustache ইনস্টল করা:
cabal install mustache- 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 টেমপ্লেটিং এবং সাইটের জন্য কনটেন্ট জেনারেট করার জন্য বেশ কার্যকরী।
- hakyll ইনস্টল করা:
cabal install hakyll- 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 এর কাজগুলো সহজ এবং আরও কার্যকরী করে তোলে।
Read more