{
  "_id": "6a1e6c031d7bb097a0a6215f",
  "Package": "xfun",
  "Type": "Package",
  "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'",
  "Version": "0.58.1",
  "Authors@R": "c(\nperson(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")),\nperson(\"Wush\", \"Wu\", role = \"ctb\"),\nperson(\"Daijiang\", \"Li\", role = \"ctb\"),\nperson(\"Xianying\", \"Tan\", role = \"ctb\"),\nperson(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")),\nperson(\"Christophe\", \"Dervieux\", role = \"ctb\"),\nperson()\n)",
  "Description": "Miscellaneous functions commonly used in other packages\nmaintained by 'Yihui Xie'.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/yihui/xfun",
  "BugReports": "https://github.com/yihui/xfun/issues",
  "Encoding": "UTF-8",
  "VignetteBuilder": "litedown",
  "Roxygen": "list(markdown = TRUE)",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://yihui.r-universe.dev",
  "Date/Publication": "2026-06-02 03:43:06 UTC",
  "RemoteUrl": "https://github.com/yihui/xfun",
  "RemoteRef": "HEAD",
  "RemoteSha": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-06-02 05:33:09 UTC",
    "User": "root"
  },
  "Author": "Yihui Xie [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0003-0645-5666>, URL: https://yihui.org),\nWush Wu [ctb],\nDaijiang Li [ctb],\nXianying Tan [ctb],\nSalim Brüggemann [ctb] (ORCID: <https://orcid.org/0000-0002-5329-5987>),\nChristophe Dervieux [ctb]",
  "Maintainer": "Yihui Xie <xie@yihui.name>",
  "MD5sum": "3e016d4376fff7cab74f372c9af29f19",
  "_user": "yihui",
  "_type": "src",
  "_file": "xfun_0.58.1.tar.gz",
  "_fileid": "179771e7697f633f257d67a18fb6641d98b05d2166b3a04012e9af0e9d2d51d2",
  "_filesize": 583685,
  "_sha256": "179771e7697f633f257d67a18fb6641d98b05d2166b3a04012e9af0e9d2d51d2",
  "_created": "2026-06-02T05:33:09.000Z",
  "_published": "2026-06-02T05:37:07.313Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79006146462,
      "time": 137,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7349770334"
    },
    {
      "job": 79006146455,
      "time": 134,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7349769140"
    },
    {
      "job": 79006146482,
      "time": 139,
      "config": "linux-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349770870"
    },
    {
      "job": 79006146457,
      "time": 121,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349766178"
    },
    {
      "job": 79006146495,
      "time": 98,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7349760925"
    },
    {
      "job": 79006146453,
      "time": 202,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7349784195"
    },
    {
      "job": 79006146434,
      "time": 105,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349762703"
    },
    {
      "job": 79006146492,
      "time": 180,
      "config": "macos-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349779197"
    },
    {
      "job": 79005840623,
      "time": 172,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349739484"
    },
    {
      "job": 79006146430,
      "time": 96,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349760704"
    },
    {
      "job": 79006146433,
      "time": 110,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7349763841"
    },
    {
      "job": 79006146449,
      "time": 105,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7349762624"
    },
    {
      "job": 79006146436,
      "time": 111,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7349764114"
    }
  ],
  "_buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/yihui/xfun",
  "_commit": {
    "id": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
    "author": "Yihui Xie <xie@yihui.name>",
    "committer": "Yihui Xie <xie@yihui.name>",
    "message": "start the next version\n",
    "time": 1780371786
  },
  "_maintainer": {
    "name": "Yihui Xie",
    "email": "xie@yihui.name",
    "login": "yihui",
    "mastodon": "@yihui@mastodon.social",
    "bluesky": "@yihui.org",
    "linkedin": "in/yihuixie",
    "description": "Freelancer (open source programmer, contractor, blogger, and writer)",
    "uuid": 163582,
    "orcid": "0000-0003-0645-5666"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.2.0",
      "role": "Depends"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "testit",
      "role": "Suggests"
    },
    {
      "package": "parallel",
      "role": "Suggests"
    },
    {
      "package": "codetools",
      "role": "Suggests"
    },
    {
      "package": "methods",
      "role": "Suggests"
    },
    {
      "package": "rstudioapi",
      "role": "Suggests"
    },
    {
      "package": "tinytex",
      "version": ">= 0.30",
      "role": "Suggests"
    },
    {
      "package": "mime",
      "role": "Suggests"
    },
    {
      "package": "litedown",
      "version": ">= 0.6",
      "role": "Suggests"
    },
    {
      "package": "commonmark",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "version": ">= 1.50",
      "role": "Suggests"
    },
    {
      "package": "remotes",
      "role": "Suggests"
    },
    {
      "package": "pak",
      "role": "Suggests"
    },
    {
      "package": "curl",
      "role": "Suggests"
    },
    {
      "package": "xml2",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "magick",
      "role": "Suggests"
    },
    {
      "package": "yaml",
      "role": "Suggests"
    },
    {
      "package": "data.table",
      "role": "Suggests"
    },
    {
      "package": "qs2",
      "role": "Suggests"
    }
  ],
  "_owner": "yihui",
  "_selfowned": true,
  "_usedby": 4862,
  "_updates": [
    {
      "week": "2025-34",
      "n": 5
    },
    {
      "week": "2025-36",
      "n": 1
    },
    {
      "week": "2025-44",
      "n": 7
    },
    {
      "week": "2025-45",
      "n": 2
    },
    {
      "week": "2025-46",
      "n": 1
    },
    {
      "week": "2025-48",
      "n": 4
    },
    {
      "week": "2025-49",
      "n": 2
    },
    {
      "week": "2025-50",
      "n": 1
    },
    {
      "week": "2025-51",
      "n": 3
    },
    {
      "week": "2025-52",
      "n": 3
    },
    {
      "week": "2026-03",
      "n": 6
    },
    {
      "week": "2026-05",
      "n": 1
    },
    {
      "week": "2026-07",
      "n": 1
    },
    {
      "week": "2026-09",
      "n": 1
    },
    {
      "week": "2026-10",
      "n": 2
    },
    {
      "week": "2026-12",
      "n": 5
    },
    {
      "week": "2026-13",
      "n": 5
    },
    {
      "week": "2026-14",
      "n": 2
    },
    {
      "week": "2026-15",
      "n": 1
    },
    {
      "week": "2026-16",
      "n": 5
    },
    {
      "week": "2026-17",
      "n": 6
    },
    {
      "week": "2026-21",
      "n": 13
    },
    {
      "week": "2026-22",
      "n": 4
    },
    {
      "week": "2026-23",
      "n": 3
    }
  ],
  "_tags": [
    {
      "name": "v0.53",
      "date": "2025-08-19"
    },
    {
      "name": "v0.54",
      "date": "2025-10-30"
    },
    {
      "name": "v0.55",
      "date": "2025-12-15"
    },
    {
      "name": "v0.56",
      "date": "2026-01-18"
    },
    {
      "name": "v0.57",
      "date": "2026-03-20"
    },
    {
      "name": "v0.58",
      "date": "2026-06-02"
    }
  ],
  "_stars": 154,
  "_contributors": [
    {
      "user": "yihui",
      "count": 920,
      "uuid": 163582
    },
    {
      "user": "cderv",
      "count": 12,
      "uuid": 6791940
    },
    {
      "user": "copilot",
      "count": 8,
      "uuid": 198982749
    },
    {
      "user": "shrektan",
      "count": 7,
      "uuid": 8368933
    },
    {
      "user": "michaelchirico",
      "count": 4,
      "uuid": 7606389
    },
    {
      "user": "salim-b",
      "count": 3,
      "uuid": 20040931
    },
    {
      "user": "wush978",
      "count": 2,
      "uuid": 1252618
    },
    {
      "user": "chuxinyuan",
      "count": 2,
      "uuid": 26940042
    },
    {
      "user": "nanxstats",
      "count": 2,
      "uuid": 199363
    },
    {
      "user": "eitsupi",
      "count": 1,
      "uuid": 50911393
    },
    {
      "user": "cheny36",
      "count": 1,
      "uuid": 8115076
    },
    {
      "user": "mmaechler",
      "count": 1,
      "uuid": 995722
    },
    {
      "user": "clarkliming",
      "count": 1,
      "uuid": 36079400
    },
    {
      "user": "kishvanchee",
      "count": 1,
      "uuid": 24776049
    },
    {
      "user": "bblodfon",
      "count": 1,
      "uuid": 10909555
    },
    {
      "user": "j-moravec",
      "count": 1,
      "uuid": 10236938
    },
    {
      "user": "hughparsonage",
      "count": 1,
      "uuid": 8111628
    },
    {
      "user": "harshvardhaniimi",
      "count": 1,
      "uuid": 40472851
    },
    {
      "user": "etiennebacher",
      "count": 1,
      "uuid": 52219252
    },
    {
      "user": "arnaudgallou",
      "count": 1,
      "uuid": 67476099
    },
    {
      "user": "albansagouis",
      "count": 1,
      "uuid": 25483578
    }
  ],
  "_userbio": {
    "uuid": 163582,
    "type": "user",
    "name": "Yihui Xie",
    "description": "Freelancer (open source programmer, contractor, blogger, and writer)"
  },
  "_downloads": {
    "count": 1251327,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/xfun"
  },
  "_mentions": 2,
  "_devurl": "https://github.com/yihui/xfun",
  "_searchresults": 1296,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/xfun.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/yihui/xfun",
  "_realowner": "yihui",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1",
      "date": "2018-01-22"
    },
    {
      "version": "0.2",
      "date": "2018-06-16"
    },
    {
      "version": "0.3",
      "date": "2018-07-06"
    },
    {
      "version": "0.4",
      "date": "2018-10-23"
    },
    {
      "version": "0.5",
      "date": "2019-02-20"
    },
    {
      "version": "0.6",
      "date": "2019-04-08"
    },
    {
      "version": "0.7",
      "date": "2019-05-14"
    },
    {
      "version": "0.8",
      "date": "2019-07-10"
    },
    {
      "version": "0.9",
      "date": "2019-08-21"
    },
    {
      "version": "0.10",
      "date": "2019-10-01"
    },
    {
      "version": "0.11",
      "date": "2019-11-12"
    },
    {
      "version": "0.12",
      "date": "2020-01-13"
    },
    {
      "version": "0.13",
      "date": "2020-04-13"
    },
    {
      "version": "0.14",
      "date": "2020-05-20"
    },
    {
      "version": "0.15",
      "date": "2020-06-21"
    },
    {
      "version": "0.16",
      "date": "2020-07-24"
    },
    {
      "version": "0.17",
      "date": "2020-09-09"
    },
    {
      "version": "0.18",
      "date": "2020-09-29"
    },
    {
      "version": "0.19",
      "date": "2020-10-30"
    },
    {
      "version": "0.20",
      "date": "2021-01-06"
    },
    {
      "version": "0.21",
      "date": "2021-02-10"
    },
    {
      "version": "0.22",
      "date": "2021-03-11"
    },
    {
      "version": "0.23",
      "date": "2021-05-15"
    },
    {
      "version": "0.24",
      "date": "2021-06-15"
    },
    {
      "version": "0.25",
      "date": "2021-08-06"
    },
    {
      "version": "0.26",
      "date": "2021-09-14"
    },
    {
      "version": "0.27",
      "date": "2021-10-18"
    },
    {
      "version": "0.28",
      "date": "2021-11-04"
    },
    {
      "version": "0.29",
      "date": "2021-12-14"
    },
    {
      "version": "0.30",
      "date": "2022-03-02"
    },
    {
      "version": "0.31",
      "date": "2022-05-10"
    },
    {
      "version": "0.32",
      "date": "2022-08-10"
    },
    {
      "version": "0.33",
      "date": "2022-09-13"
    },
    {
      "version": "0.34",
      "date": "2022-10-18"
    },
    {
      "version": "0.35",
      "date": "2022-11-16"
    },
    {
      "version": "0.36",
      "date": "2022-12-21"
    },
    {
      "version": "0.37",
      "date": "2023-02-01"
    },
    {
      "version": "0.38",
      "date": "2023-03-24"
    },
    {
      "version": "0.39",
      "date": "2023-04-20"
    },
    {
      "version": "0.40",
      "date": "2023-08-09"
    },
    {
      "version": "0.41",
      "date": "2023-11-01"
    },
    {
      "version": "0.42",
      "date": "2024-02-08"
    },
    {
      "version": "0.43",
      "date": "2024-03-25"
    },
    {
      "version": "0.44",
      "date": "2024-05-15"
    },
    {
      "version": "0.45",
      "date": "2024-06-16"
    },
    {
      "version": "0.46",
      "date": "2024-07-18"
    },
    {
      "version": "0.47",
      "date": "2024-08-17"
    },
    {
      "version": "0.48",
      "date": "2024-10-03"
    },
    {
      "version": "0.49",
      "date": "2024-10-31"
    },
    {
      "version": "0.50",
      "date": "2025-01-07"
    },
    {
      "version": "0.51",
      "date": "2025-02-19"
    },
    {
      "version": "0.52",
      "date": "2025-04-02"
    },
    {
      "version": "0.53",
      "date": "2025-08-19"
    },
    {
      "version": "0.54",
      "date": "2025-10-30"
    },
    {
      "version": "0.55",
      "date": "2025-12-16"
    },
    {
      "version": "0.56",
      "date": "2026-01-18"
    },
    {
      "version": "0.57",
      "date": "2026-03-20"
    },
    {
      "version": "0.58",
      "date": "2026-06-01"
    }
  ],
  "_exports": [
    "alnum_id",
    "append_unique",
    "append_utf8",
    "as_strict_list",
    "attr2",
    "base_pkgs",
    "base64_decode",
    "base64_encode",
    "base64_uri",
    "bg_process",
    "broken_packages",
    "browser_print",
    "bump_version",
    "cache_exec",
    "cache_rds",
    "check_old_package",
    "check_package_name",
    "compare_Rcheck",
    "crandalf_check",
    "crandalf_results",
    "csv_options",
    "decimal_dot",
    "del_empty_dir",
    "dir_create",
    "dir_exists",
    "divide_chunk",
    "do_once",
    "download_cache",
    "download_file",
    "embed_dir",
    "embed_file",
    "embed_files",
    "env_option",
    "existing_files",
    "exit_call",
    "fenced_block",
    "fenced_div",
    "file_exists",
    "file_ext",
    "file_rename",
    "file_string",
    "find_globals",
    "find_locals",
    "format_bytes",
    "from_root",
    "github_api",
    "github_releases",
    "grep_sub",
    "gsub_dir",
    "gsub_ext",
    "gsub_file",
    "gsub_files",
    "html_escape",
    "html_tag",
    "html_value",
    "html_view",
    "in_dir",
    "install_dir",
    "install_github",
    "is_abs_path",
    "is_arm64",
    "is_ascii",
    "is_blank",
    "is_CRAN_incoming",
    "is_linux",
    "is_macos",
    "is_R_CMD_check",
    "is_rel_path",
    "is_sub_path",
    "is_unix",
    "is_web_path",
    "is_windows",
    "join_words",
    "js",
    "json_vector",
    "lazy_load",
    "lazy_save",
    "loadable",
    "magic_path",
    "make_fence",
    "mark_dirs",
    "md_table",
    "md5",
    "mime_type",
    "msg_cat",
    "n2w",
    "native_encode",
    "new_app",
    "new_record",
    "news2md",
    "normalize_path",
    "numbers_to_words",
    "optipng",
    "parse_only",
    "pkg_attach",
    "pkg_attach2",
    "pkg_available",
    "pkg_bib",
    "pkg_load",
    "pkg_load2",
    "proc_kill",
    "process_file",
    "proj_root",
    "prose_index",
    "protect_math",
    "rand_unit",
    "random_port",
    "raw_string",
    "Rcmd",
    "read_all",
    "read_bin",
    "read_utf8",
    "record",
    "record_print",
    "relative_path",
    "rename_seq",
    "rest_api",
    "rest_api_raw",
    "retry",
    "rev_check",
    "root_rules",
    "Rscript",
    "Rscript_call",
    "rstudio_type",
    "same_path",
    "sans_ext",
    "serve_dir",
    "session_info",
    "set_envvar",
    "shrink_images",
    "sort_file",
    "split_lines",
    "split_source",
    "stop_app",
    "str_wrap",
    "strict_list",
    "strip_html",
    "submit_cran",
    "system3",
    "tab_content",
    "tabset",
    "taml_file",
    "taml_load",
    "taml_save",
    "tinify",
    "tinify_dir",
    "tojson",
    "tree",
    "try_error",
    "try_silent",
    "upload_ftp",
    "upload_imgur",
    "upload_win_builder",
    "url_accessible",
    "url_destination",
    "url_filename",
    "valid_syntax",
    "with_ext",
    "write_utf8",
    "yaml_body",
    "yaml_load"
  ],
  "_help": [
    {
      "page": "alnum_id",
      "title": "Generate ID strings",
      "topics": [
        "alnum_id"
      ]
    },
    {
      "page": "attr2",
      "title": "Obtain an attribute of an object without partial matching",
      "topics": [
        "attr2"
      ]
    },
    {
      "page": "base_pkgs",
      "title": "Get base R package names",
      "topics": [
        "base_pkgs"
      ]
    },
    {
      "page": "base64_encode",
      "title": "Encode/decode data into/from base64 encoding.",
      "topics": [
        "base64_decode",
        "base64_encode"
      ]
    },
    {
      "page": "base64_uri",
      "title": "Generate the Data URI for a file",
      "topics": [
        "base64_uri"
      ]
    },
    {
      "page": "bg_process",
      "title": "Start a background process",
      "topics": [
        "bg_process"
      ]
    },
    {
      "page": "broken_packages",
      "title": "Find out broken packages and reinstall them",
      "topics": [
        "broken_packages"
      ]
    },
    {
      "page": "browser_print",
      "title": "Print a web page to PDF/PNG/JPEG",
      "topics": [
        "browser_print"
      ]
    },
    {
      "page": "bump_version",
      "title": "Bump version numbers",
      "topics": [
        "bump_version"
      ]
    },
    {
      "page": "cache_exec",
      "title": "Cache the execution of an expression in memory or on disk",
      "topics": [
        "cache_exec"
      ]
    },
    {
      "page": "crandalf_check",
      "title": "Submit check jobs to crandalf",
      "topics": [
        "crandalf_check",
        "crandalf_results"
      ]
    },
    {
      "page": "csv_options",
      "title": "Parse comma-separated chunk options",
      "topics": [
        "csv_options"
      ]
    },
    {
      "page": "decimal_dot",
      "title": "Evaluate an expression after forcing the decimal point to be a dot",
      "topics": [
        "decimal_dot"
      ]
    },
    {
      "page": "del_empty_dir",
      "title": "Delete an empty directory",
      "topics": [
        "del_empty_dir"
      ]
    },
    {
      "page": "dir_create",
      "title": "Create a directory recursively by default",
      "topics": [
        "dir_create"
      ]
    },
    {
      "page": "dir_exists",
      "title": "Test the existence of files and directories",
      "topics": [
        "dir_exists",
        "file_exists"
      ]
    },
    {
      "page": "divide_chunk",
      "title": "Divide chunk options from the code chunk body",
      "topics": [
        "divide_chunk"
      ]
    },
    {
      "page": "do_once",
      "title": "Perform a task once in an R session",
      "topics": [
        "do_once"
      ]
    },
    {
      "page": "download_cache",
      "title": "Download a file from a URL and cache it on disk",
      "topics": [
        "download_cache"
      ]
    },
    {
      "page": "download_file",
      "title": "Try various methods to download a file",
      "topics": [
        "download_file"
      ]
    },
    {
      "page": "embed_file",
      "title": "Embed a file, multiple files, or directory on an HTML page",
      "topics": [
        "embed_dir",
        "embed_file",
        "embed_files"
      ]
    },
    {
      "page": "env_option",
      "title": "Retrieve a global option from both 'options()' and environment variables",
      "topics": [
        "env_option"
      ]
    },
    {
      "page": "existing_files",
      "title": "Find file paths that exist",
      "topics": [
        "existing_files"
      ]
    },
    {
      "page": "exit_call",
      "title": "Call 'on.exit()' in a parent function",
      "topics": [
        "exit_call"
      ]
    },
    {
      "page": "fenced_block",
      "title": "Create a fenced block in Markdown",
      "topics": [
        "fenced_block",
        "fenced_div",
        "make_fence"
      ]
    },
    {
      "page": "file_ext",
      "title": "Manipulate filename extensions",
      "topics": [
        "file_ext",
        "sans_ext",
        "with_ext"
      ]
    },
    {
      "page": "file_rename",
      "title": "Rename files and directories",
      "topics": [
        "file_rename"
      ]
    },
    {
      "page": "file_string",
      "title": "Read a text file and concatenate the lines by ''\\n''",
      "topics": [
        "file_string"
      ]
    },
    {
      "page": "find_globals",
      "title": "Find global/local variables in R code",
      "topics": [
        "find_globals",
        "find_locals"
      ]
    },
    {
      "page": "format_bytes",
      "title": "Format numbers of bytes using a specified unit",
      "topics": [
        "format_bytes"
      ]
    },
    {
      "page": "from_root",
      "title": "Get the relative path of a path in a project relative to the current working directory",
      "topics": [
        "from_root"
      ]
    },
    {
      "page": "github_releases",
      "title": "Get the tags of GitHub releases of a repository",
      "topics": [
        "github_releases"
      ]
    },
    {
      "page": "grep_sub",
      "title": "Perform replacement with 'gsub()' on elements matched from 'grep()'",
      "topics": [
        "grep_sub"
      ]
    },
    {
      "page": "gsub_file",
      "title": "Search and replace strings in files",
      "topics": [
        "gsub_dir",
        "gsub_ext",
        "gsub_file",
        "gsub_files"
      ]
    },
    {
      "page": "html_tag",
      "title": "Tools for HTML tags",
      "topics": [
        "html_escape",
        "html_tag",
        "html_value",
        "html_view"
      ]
    },
    {
      "page": "in_dir",
      "title": "Evaluate an expression under a specified working directory",
      "topics": [
        "in_dir"
      ]
    },
    {
      "page": "install_dir",
      "title": "Install a source package from a directory",
      "topics": [
        "install_dir"
      ]
    },
    {
      "page": "install_github",
      "title": "An alias of 'remotes::install_github()'",
      "topics": [
        "install_github"
      ]
    },
    {
      "page": "is_abs_path",
      "title": "Test if paths are relative or absolute",
      "topics": [
        "is_abs_path",
        "is_rel_path"
      ]
    },
    {
      "page": "is_ascii",
      "title": "Check if a character vector consists of entirely ASCII characters",
      "topics": [
        "is_ascii"
      ]
    },
    {
      "page": "is_blank",
      "title": "Test if a character vector consists of blank strings",
      "topics": [
        "is_blank"
      ]
    },
    {
      "page": "is_sub_path",
      "title": "Test if a path is a subpath of a dir",
      "topics": [
        "is_sub_path"
      ]
    },
    {
      "page": "is_web_path",
      "title": "Test if a path is a web path",
      "topics": [
        "is_web_path"
      ]
    },
    {
      "page": "os",
      "title": "Test for types of operating systems",
      "topics": [
        "is_arm64",
        "is_linux",
        "is_macos",
        "is_unix",
        "is_windows"
      ]
    },
    {
      "page": "join_words",
      "title": "Join multiple words into a single string",
      "topics": [
        "join_words"
      ]
    },
    {
      "page": "lazy_save",
      "title": "Save objects to files and lazy-load them",
      "topics": [
        "lazy_load",
        "lazy_save"
      ]
    },
    {
      "page": "magic_path",
      "title": "Find a file or directory under a root directory",
      "topics": [
        "magic_path"
      ]
    },
    {
      "page": "mark_dirs",
      "title": "Mark some paths as directories",
      "topics": [
        "mark_dirs"
      ]
    },
    {
      "page": "md_table",
      "title": "Generate a simple Markdown pipe table",
      "topics": [
        "md_table"
      ]
    },
    {
      "page": "md5",
      "title": "Calculate the MD5 checksums of R objects",
      "topics": [
        "md5"
      ]
    },
    {
      "page": "mime_type",
      "title": "Get the MIME types of files",
      "topics": [
        "mime_type"
      ]
    },
    {
      "page": "msg_cat",
      "title": "Generate a message with 'cat()'",
      "topics": [
        "msg_cat"
      ]
    },
    {
      "page": "native_encode",
      "title": "Try to use the system native encoding to represent a character vector",
      "topics": [
        "native_encode"
      ]
    },
    {
      "page": "new_app",
      "title": "Create or stop a local web application",
      "topics": [
        "new_app",
        "stop_app"
      ]
    },
    {
      "page": "news2md",
      "title": "Convert package news to the Markdown format",
      "topics": [
        "news2md"
      ]
    },
    {
      "page": "normalize_path",
      "title": "Normalize paths",
      "topics": [
        "normalize_path"
      ]
    },
    {
      "page": "numbers_to_words",
      "title": "Convert numbers to English words",
      "topics": [
        "n2w",
        "numbers_to_words"
      ]
    },
    {
      "page": "optipng",
      "title": "Run OptiPNG on all PNG files under a directory",
      "topics": [
        "optipng"
      ]
    },
    {
      "page": "parse_only",
      "title": "Parse R code and do not keep the source",
      "topics": [
        "parse_only"
      ]
    },
    {
      "page": "pkg_attach",
      "title": "Attach or load packages, and automatically install missing packages if requested",
      "topics": [
        "loadable",
        "pkg_attach",
        "pkg_attach2",
        "pkg_available",
        "pkg_load",
        "pkg_load2"
      ]
    },
    {
      "page": "pkg_bib",
      "title": "Generate BibTeX bibliography databases for R packages",
      "topics": [
        "pkg_bib"
      ]
    },
    {
      "page": "proc_kill",
      "title": "Kill a process and (optionally) all its child processes",
      "topics": [
        "proc_kill"
      ]
    },
    {
      "page": "process_file",
      "title": "Read a text file, process the text with a function, and write the text back",
      "topics": [
        "process_file",
        "sort_file"
      ]
    },
    {
      "page": "proj_root",
      "title": "Return the (possible) root directory of a project",
      "topics": [
        "proj_root",
        "root_rules"
      ]
    },
    {
      "page": "prose_index",
      "title": "Find the indices of lines in Markdown that are prose (not code blocks)",
      "topics": [
        "prose_index"
      ]
    },
    {
      "page": "protect_math",
      "title": "Protect math expressions in pairs of backticks in Markdown",
      "topics": [
        "protect_math"
      ]
    },
    {
      "page": "rand_unit",
      "title": "Pseudo-random numbers on [0, 1) based on a linear congruential generator",
      "topics": [
        "rand_unit"
      ]
    },
    {
      "page": "random_port",
      "title": "Find a random available TCP port",
      "topics": [
        "random_port"
      ]
    },
    {
      "page": "raw_string",
      "title": "Print a character vector in its raw form",
      "topics": [
        "print.xfun_raw_string",
        "raw_string"
      ]
    },
    {
      "page": "read_all",
      "title": "Read all text files and concatenate their content",
      "topics": [
        "read_all"
      ]
    },
    {
      "page": "read_bin",
      "title": "Read all records of a binary file as a raw vector by default",
      "topics": [
        "read_bin"
      ]
    },
    {
      "page": "read_utf8",
      "title": "Read / write files encoded in UTF-8",
      "topics": [
        "append_unique",
        "append_utf8",
        "read_utf8",
        "write_utf8"
      ]
    },
    {
      "page": "record",
      "title": "Run R code and record the results",
      "topics": [
        "format.xfun_record_results",
        "print.xfun_record_results",
        "record"
      ]
    },
    {
      "page": "record_print",
      "title": "Print methods for 'record()'",
      "topics": [
        "new_record",
        "record_print",
        "record_print.default",
        "record_print.record_asis"
      ]
    },
    {
      "page": "relative_path",
      "title": "Get the relative path of a path relative to a directory",
      "topics": [
        "relative_path"
      ]
    },
    {
      "page": "rename_seq",
      "title": "Rename files with a sequential numeric prefix",
      "topics": [
        "rename_seq"
      ]
    },
    {
      "page": "rest_api",
      "title": "Get data from a REST API",
      "topics": [
        "github_api",
        "rest_api",
        "rest_api_raw"
      ]
    },
    {
      "page": "retry",
      "title": "Retry calling a function for a number of times",
      "topics": [
        "retry"
      ]
    },
    {
      "page": "rev_check",
      "title": "Run 'R CMD check' on the reverse dependencies of a package",
      "topics": [
        "compare_Rcheck",
        "rev_check"
      ]
    },
    {
      "page": "Rscript",
      "title": "Run the commands 'Rscript' and 'R CMD'",
      "topics": [
        "Rcmd",
        "Rscript"
      ]
    },
    {
      "page": "Rscript_call",
      "title": "Call a function in a new R session via 'Rscript()'",
      "topics": [
        "Rscript_call"
      ]
    },
    {
      "page": "rstudio_type",
      "title": "Type a character vector into the RStudio source editor",
      "topics": [
        "rstudio_type"
      ]
    },
    {
      "page": "same_path",
      "title": "Test if two paths are the same after they are normalized",
      "topics": [
        "same_path"
      ]
    },
    {
      "page": "serve_dir",
      "title": "Serve a static directory",
      "topics": [
        "serve_dir"
      ]
    },
    {
      "page": "session_info",
      "title": "An alternative to sessionInfo() to print session information",
      "topics": [
        "session_info"
      ]
    },
    {
      "page": "set_envvar",
      "title": "Set environment variables",
      "topics": [
        "set_envvar"
      ]
    },
    {
      "page": "shrink_images",
      "title": "Shrink images to a maximum width",
      "topics": [
        "shrink_images"
      ]
    },
    {
      "page": "split_lines",
      "title": "Split a character vector by line breaks",
      "topics": [
        "split_lines"
      ]
    },
    {
      "page": "split_source",
      "title": "Split source lines into complete expressions",
      "topics": [
        "split_source"
      ]
    },
    {
      "page": "str_wrap",
      "title": "Wrap character vectors",
      "topics": [
        "str_wrap"
      ]
    },
    {
      "page": "strict_list",
      "title": "Strict lists",
      "topics": [
        "$.xfun_strict_list",
        "as_strict_list",
        "print.xfun_strict_list",
        "strict_list"
      ]
    },
    {
      "page": "strip_html",
      "title": "Strip HTML tags",
      "topics": [
        "strip_html"
      ]
    },
    {
      "page": "submit_cran",
      "title": "Submit a source package to CRAN",
      "topics": [
        "submit_cran"
      ]
    },
    {
      "page": "system3",
      "title": "Run 'system2()' and mark its character output as UTF-8 if appropriate",
      "topics": [
        "system3"
      ]
    },
    {
      "page": "tabset",
      "title": "Represent a (recursive) list with (nested) tabsets",
      "topics": [
        "tabset",
        "tab_content"
      ]
    },
    {
      "page": "taml_load",
      "title": "A simple YAML reader and writer",
      "topics": [
        "taml_file",
        "taml_load",
        "taml_save"
      ]
    },
    {
      "page": "tinify",
      "title": "Use the Tinify API to compress PNG and JPEG images",
      "topics": [
        "tinify",
        "tinify_dir"
      ]
    },
    {
      "page": "tojson",
      "title": "A simple JSON serializer",
      "topics": [
        "js",
        "json_vector",
        "tojson"
      ]
    },
    {
      "page": "tree",
      "title": "Turn the output of 'str()' into a tree diagram",
      "topics": [
        "tree"
      ]
    },
    {
      "page": "try_error",
      "title": "Try an expression and see if it throws an error",
      "topics": [
        "try_error"
      ]
    },
    {
      "page": "try_silent",
      "title": "Try to evaluate an expression silently",
      "topics": [
        "try_silent"
      ]
    },
    {
      "page": "upload_ftp",
      "title": "Upload to an FTP server via 'curl'",
      "topics": [
        "upload_ftp",
        "upload_win_builder"
      ]
    },
    {
      "page": "upload_imgur",
      "title": "Upload an image to imgur.com",
      "topics": [
        "upload_imgur"
      ]
    },
    {
      "page": "url_accessible",
      "title": "Test if a URL is accessible",
      "topics": [
        "url_accessible"
      ]
    },
    {
      "page": "url_destination",
      "title": "Get the final destination of a URL",
      "topics": [
        "url_destination"
      ]
    },
    {
      "page": "url_filename",
      "title": "Extract filenames from a URLs",
      "topics": [
        "url_filename"
      ]
    },
    {
      "page": "valid_syntax",
      "title": "Check if the syntax of the code is valid",
      "topics": [
        "valid_syntax"
      ]
    },
    {
      "page": "yaml_body",
      "title": "Partition the YAML metadata and the body in a document",
      "topics": [
        "yaml_body"
      ]
    },
    {
      "page": "yaml_load",
      "title": "Read YAML data",
      "topics": [
        "yaml_load"
      ]
    }
  ],
  "_readme": "https://github.com/yihui/xfun/raw/HEAD/README.md",
  "_rundeps": [],
  "_vignettes": [
    {
      "source": "xfun.Rmd",
      "filename": "xfun.html",
      "title": "An Introduction to xfun",
      "author": "Yihui Xie",
      "engine": "litedown::vignette",
      "headings": [
        "No more partial matching for lists!",
        "Output character vectors for human eyes",
        "Print the content of a text file",
        "Get the data URI of a file",
        "Match strings and do substitutions",
        "Search and replace strings in files",
        "Manipulate filename extensions",
        "Find files (in a project) without the pain of thinking about absolute/relative paths",
        "Types of operating systems",
        "Loading and attaching packages",
        "Read/write files in UTF-8",
        "Convert numbers to English words",
        "Cache an R expression to disk or in memory",
        "Check reverse dependencies of a package",
        "Input a character vector into the RStudio source editor",
        "Print session information"
      ],
      "created": "2018-06-15 18:52:19",
      "modified": "2026-06-02 03:41:13",
      "commits": 22
    }
  ],
  "_score": 18.242673984452953,
  "_indexed": true,
  "_nocasepkg": "xfun",
  "_universes": [
    "yihui"
  ],
  "_previous": "0.57.11",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.58.1",
      "date": "2026-06-02T05:35:25.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "87f387d21315a3059c8976f708c1447aac16e0b7706a51f470abf6c03e6a5f2a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.58.1",
      "date": "2026-06-02T05:35:12.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "ad8d960bd8026149064282529e236c7eee3f15c1eae34d9eadada841fb5dfd40",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.58.1",
      "date": "2026-06-02T05:35:26.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "d084614694ddd6cb08720fc14a13f20570e38cbc96e8f38ae5fc8585f4c283c6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.58.1",
      "date": "2026-06-02T05:35:03.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "2855cf1806751c25230894c4872e2e61ac1811b649f44d73ef9e4786396129d0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.58.1",
      "date": "2026-06-02T05:34:40.000Z",
      "arch": "aarch64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "c3db90ad84f2b75e10d21672ec30ee3895c09b736404e7ed8e05769420a1651d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.58.1",
      "date": "2026-06-02T05:36:05.000Z",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "7e8e50ad30d0991515da854ac2f267e0d4043c58c24632c1ead90ef1f2d12c3f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.58.1",
      "date": "2026-06-02T05:34:49.000Z",
      "arch": "aarch64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "07efed1797873017bf625c41f16697f47ff5ab8a3a0c50c611c99970f5a13560",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.58.1",
      "date": "2026-06-02T05:35:46.000Z",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "374c35cb894afbbb0d58e4df1a54ad8a2177fa594827dc2ab88e78565f62d72a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.58.1",
      "date": "2026-06-02T05:35:06.000Z",
      "arch": "emscripten",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "efc8e9f9a76176fcfca38836061ebdb0d6d013a9eca861cf7a7f55d6fa8f99c1",
      "status": "success",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.58.1",
      "date": "2026-06-02T05:34:32.000Z",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "ae9d6ede4355c3944d842617c6d312b2e58bf1fcdcaedaab3063dd531fd2f023",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.58.1",
      "date": "2026-06-02T05:34:25.000Z",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "6a1402cb13713514c1c8b5d81939dc29a3ca0ada6dd057ff2657836da7b71cdf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.58.1",
      "date": "2026-06-02T05:34:27.000Z",
      "arch": "x86_64",
      "commit": "930691bfe2c2bdc1c96d15d2704bf449e7422d84",
      "fileid": "3d4169bae948a14880adf56dcd53e8cdc48743cbaddef1b76eb610168b2dd71d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/26800457923"
    }
  ]
}