From e3deda0377ec81390e519e12e01a21d514b33acf Mon Sep 17 00:00:00 2001 From: r74tech Date: Tue, 8 Oct 2024 01:07:08 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=20Fix=20parse=20method=20to=20hand?= =?UTF-8?q?le=20non-Nokogiri::XML::Element=20elements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Improved `UserParser.parse` to properly convert elements before processing. --- wikidotrb/CHANGELOG.md | 7 ++++++- wikidotrb/lib/wikidotrb/util/parser/user.rb | 8 +++++++- wikidotrb/lib/wikidotrb/version.rb | 2 +- wikidotrb/wikidotrb.gemspec | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/wikidotrb/CHANGELOG.md b/wikidotrb/CHANGELOG.md index a5f0a7d..5ffb132 100644 --- a/wikidotrb/CHANGELOG.md +++ b/wikidotrb/CHANGELOG.md @@ -5,9 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [released] ## [3.0.7.pre] - 2024-10-06 ### Added - Initial release of `wikidotrb`, a Ruby library inspired by `wikidot.py`. + +## [3.0.7.pre.1] - 2024-10-08 + +### Changed +- Improved `UserParser.parse` method to convert non-`Nokogiri::XML::Element` elements properly before processing. \ No newline at end of file diff --git a/wikidotrb/lib/wikidotrb/util/parser/user.rb b/wikidotrb/lib/wikidotrb/util/parser/user.rb index ca3c7bd..ab7fccf 100644 --- a/wikidotrb/lib/wikidotrb/util/parser/user.rb +++ b/wikidotrb/lib/wikidotrb/util/parser/user.rb @@ -12,7 +12,13 @@ class UserParser # @param elem [Nokogiri::XML::Element] パース対象の要素(printuserクラスがついた要素) # @return [AbstractUser] パースされて得られたユーザーオブジェクト def self.parse(client, elem) - return nil if elem.nil? || !elem.is_a?(Nokogiri::XML::Element) + if elem.nil? + return nil + elsif !elem.is_a?(Nokogiri::XML::Element) + # 文字列であることを仮定し、Nokogiriで変換する + parsed_doc = Nokogiri::HTML.fragment(elem.to_s) + elem = parsed_doc.children.first + end if elem["class"]&.include?("deleted") # "deleted"クラスがある場合はDeletedUser diff --git a/wikidotrb/lib/wikidotrb/version.rb b/wikidotrb/lib/wikidotrb/version.rb index 21e31fe..350ba5f 100644 --- a/wikidotrb/lib/wikidotrb/version.rb +++ b/wikidotrb/lib/wikidotrb/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Wikidotrb - VERSION = "0.0.1-dev1" + VERSION = "3.0.7.pre.1" end diff --git a/wikidotrb/wikidotrb.gemspec b/wikidotrb/wikidotrb.gemspec index a211669..18366f2 100644 --- a/wikidotrb/wikidotrb.gemspec +++ b/wikidotrb/wikidotrb.gemspec @@ -4,7 +4,7 @@ require_relative "lib/wikidotrb/version" Gem::Specification.new do |spec| spec.name = "wikidotrb" - spec.version = "3.0.7.pre" + spec.version = "3.0.7.pre.1" spec.authors = ["r74tech"] spec.email = ["r74tech@gmail.com"]